2

の各偶数アイテムのListView色を変えてほしい。この目的のために、私は次のコードを使用しました:

public void bindView(View row, Context ctxt, Cursor c) {
            ViewHolder holder = (ViewHolder) row.getTag();
            if (c.getPosition() % 2 == 0) {
                row.setBackgroundDrawable(getResources().getDrawable(
                        R.drawable.dark_item_background));
            }

            holder.populateFrom(c, mDbHelper);
        }

ただし、タッチイベントの後、アイテムは強調表示されません。これを克服する方法をアドバイスしてください。

アップデート

Gophermofurのアドバイスとして、セレクターを作成しました。

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/list_activated_holo" android:state_activated="true"/>
    <item android:drawable="@color/item_back_color"/>

</selector>

現在はJellyBeanで動作し、Gingerbreadでは動作しません。何かご意見は?

4

2 に答える 2

0

リストビューのアイテムは、実際には単色(黒または白)として定義されていません。セレクターを使用して定義され、さまざまな状態(通常=黒、押された=オレンジ、フォーカスされた=青など)に複数の色があります。

リストビュー内のアイテムの背景色を単色に置き換え始めると、そのセレクターがオーバーライドされるため、状態ごとに異なる色がなくなります。

通常、リストビューセレクターはlistivew全体に適用されますが、アイテムの背景またはセレクターに直接適用できる場合があります(よくわかりません。現時点ではテストできません)。

セレクターXMLファイルを作成する方法については、次のリンクを参照してください。

チュートリアル

SO質問

于 2012-08-20T16:45:38.040 に答える
0

現在はJellyBeanで動作し、Gingerbreadでは動作しません。何かご意見は?

drawable / list_activate_holoが何であるかはわかりませんが、その名前からすると、AndroidHoloテーマを使用しているように聞こえます。これはAPIレベル14でのみ追加されました 。http://developer.android.com/design/style /themes.html

APIレベル14未満で実行されているデバイスで色を使用する場合は、独自のvalues/colors.xmlで色を定義する必要があります。

于 2013-08-05T01:49:30.767 に答える