【问题标题】:Android ListView how to change selected item backgroundAndroid ListView如何更改所选项目背景
【发布时间】:2016-01-12 22:46:30
【问题描述】:

我会为以下问题寻求帮助。 对我来说很奇怪:) 我试图更改 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"

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

【问题讨论】:

    标签: android listview background selected


    【解决方案1】:

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

    乍一看很简单。

    所以我将分享我的经验,希望能拯救另一个人 :) 你可以简单地使用。

    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 没有太多经验,所以这可能不是完美的解决方案。

    我会很高兴有更好的解决方案。

    【讨论】:

    • 干得好!很高兴您找到了解决方案。
    【解决方案2】:

    尝试添加

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

    【讨论】:

    • 感谢您的回答,但这对我没有帮助。我已经测试了所有听起来合乎逻辑的“state_”。显然我错过了其他东西,但它是什么,我不知道?
    • 对此我深表歉意
    • 一无所获。我很乐意评论我对我的问题的决定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多