Android ListView如何更改所选项目背景

时间:2016-01-12 22:46:30

标签: android listview background selected

我会为以下问题寻求帮助。 对我来说很奇怪:) 我试图在ListView中更改所选项目的背景。 我按以下方式设置项目。

drawer_home.setItemChecked(0, true);

我知道我可以设置其他项目背景颜色。我没有问题,例如更改所有背景或活动项目,但没有选择。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_selected="true" android:drawable="@android:color/holo_blue_light"/>
    <item android:state_checked="true" android:drawable="@android:color/holo_red_dark"/>
    <item android:state_pressed="true" android:drawable="@android:color/holo_green_dark"/>
    <item android:drawable="@android:color/white"/>
</selector>

android:background="@android:color/white"
android:listSelector="@drawable/listview_selector"

我试图改变的是主题上的样式,结果是一样的。 一切都好,除了选择项目:(

2 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。 我花了很多时间来解决这么简单的问题。

起初看起来很简单。

所以我将分享我的经验,希望另外一个人保存timf :) 你可以简单地使用。

drawer_home.getChildAt(0).setBackgroundColor(Color.RED);

drawer_home.getChildAt(drawer_home.getSelectedItemPosition()).setBackgroundColor(Color.RED);

但前提是ListView中的项目是静态的。

在我遇到这个决定之前,但是因为使用ArrayAdapter动态更改了ListView项目。

drawer_home.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_activated_1, home_menu_title));

它给了我一个错误。 因为很明显内容还没有加载。 然后使用以下内容。

drawer_home.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
    @Override
    public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft,
                               int oldTop, int oldRight, int oldBottom) {
        // TODO Auto-generated method stub
        if(menuType == MENU_TYPE_HOME && currentPosition == 0) {
            drawer_home.getChildAt(0).setBackgroundColor(0xCC4d4dff);
        }
    }
});

我对Android没有太多经验,因此可能不是完美的解决方案。

我很乐意找到更好的解决方案。

答案 1 :(得分:0)

尝试添加

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