1

アプリの ListView に CAB (Contextual Action Bar) を追加しようとしていますが、1 つのことを除いてすべてがうまくいっています。最初にCABを追加したとき、選択されていても長押ししても背景色が変わりませんでした。これに対する私の解決策は、onItemCheckedStateChanged をオーバーライドして背景色を設定することでした。私の問題は、背景色を以前の色に設定しようとするとできないことです。ListView の背景が薄くなっているように見えます。これは、背景に溶け込む色を選択できないことを意味します。皆さんはどうしていますか?これが私のコードです:

@Override
public void onItemCheckedStateChanged(ActionMode mode, int position,
                                              long id, boolean checked) {

    if (checked) {
        //#6DCAEC is a type of Holo Blue that I want.
        listView.getChildAt(position).setBackgroundColor(Color.parseColor("#6DCAEC"));
    } else {
        //#f1f1f1 was the closest I could get to the background put it still seems out of place
        listView.getChildAt(position).setBackgroundColor(Color.parseColor("f1f1f1"));
    }
}
4

2 に答える 2

0

選択モードをオフにしますListView:

mListView.setChoiceMode(ListView.CHOICE_MODE_NONE);

選択肢のクリア(これは表示されているアイテムには影響しません。ListView内部の選択肢リストをクリアするだけです)

mListView.clearChoices();

最後に、表示されているアイテムを反復処理して変更します。

 for (int i = 0; i < mListView.getChildCount(); i++) {

        View c = mListView.getChildAt(i);

         //--below code is for un-checking, 
         //--you can do something else, 
         //--like altering the background
        if (c instanceof Checkable) {
            ((Checkable) c).setChecked(false);
        }
    }
于 2012-12-10T17:23:26.163 に答える