2

私はアクティビティを持っていextends ListActivityます。

ListView は、既定のテーマの色を使用します。独自の Color State List リソースを ListView に設定するにはどうすればよいですか?

私はこれを試しましたonCreate()

getListView().setBackgroundResource(R.drawable.background_listview);

これは background_listview です

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:color="#ff000000"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#ff000000"/> <!-- focused -->
    <item android:color="#ff000000"/> <!-- default -->
</selector>

しかし、私はエラーしか得ません

Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #4: <item> tag
requires a 'drawable' attribute or child tag defining a drawable.
4

2 に答える 2

2

ListAdapter から拡張される独自のカスタム アダプターを作成し、オーバーライドされた getView() メソッドで、各リストの項目のカスタム レイアウトを拡張する必要があります。このレイアウトでは、セレクターを背景として設定する必要があります。実際、セレクターは問題ないようです。

UDPATE :

この簡単なコードを見てください:

アクティビティ:

public class YourActivity extends Activity {
    private CustomAdapter customAdapter;
    private ArrayList<ExampleObject> listObjects;
    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_layout);

        listView = (ListView) findViewById(R.id.activity_listview);
        listObjects = new ArrayList<ExampleObjects>();
        customAdapter = new CustomAdapter(this, R.layout.list_item, listObjects);
        listView.setAdapter(customAdapter);
    }

アダプタ:

public class CustomAdapter extends ArrayAdapter<ExampleObject> {

    private LayoutInflater inflater;

    public NoteAdapter(Context context, int textViewResourceId, List<ExampleObject> objects) {
        super(context, textViewResourceId, objects);
        inflater = LayoutInflater.from(context);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return inflater.inflate(R.layout.list_item, parent, false);
    }
}

あなたの list_item.xml :

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:background="@drawable/your_selector">

</RelativeLayout>

お役に立てば幸いです。コンパイラなしでコードを書いたので、間違いを犯したのかもしれません。

再度更新:

に状況を変更android:color="#ff000000"android:drawable="#ff000000"ます。それは私が望むのに役立ちます。

幸運を!

于 2013-01-02T18:57:29.917 に答える
1

独自の を作成する必要はありませんが、セレクターでをAdapter交換し、正しい方法を使用して設定するようにしてください。android:colorandroid:drawable

そのため、セレクターを のバックグラウンドとして設定しないでくださいListView。リソースが のアイテムで動作するように、次のようにセレクターを指定してListViewください。

getListView().setSelector(R.drawable.background_listview);
于 2013-01-02T20:38:54.473 に答える