我会为以下问题寻求帮助。 对我来说很奇怪:) 我试图在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"
我试图改变的是主题上的样式,结果是一样的。 一切都好,除了选择项目:(
答案 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"/>