1

我正在尝试将 CAB(上下文操作栏)添加到我的应用程序中的 ListView 中,除了一件事之外,一切都很顺利。当我最初添加 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 回答
0

试试这个代码#e7e8e9,在我的手机上试过,效果很好

在这里找到:导航抽屉的全息灯颜色代码

于 2014-02-24T09:43:03.880 回答