android - 在上下文操作模式下选择时,ListView 项目在视觉上不会变为 "highlighted"

标签 android android-layout android-widget

我关注了安卓官方网站的tutorial on creating contextual action menus .使用下面的代码,当我长按我的 ListView 项目之一时,它确实被选中,但它并没有直观地表明它已被选中。我正在使用 Holo Light 主题,我希望我的 ListView 中每个选定项目的背景颜色都变为蓝色阴影。

这是正常行为吗?

我已经尝试测试 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);,甚至没有一行会突出显示。

使用 listView.setSelector(android.R.color.holo_blue_light); 确实会突出显示最后选择的行,但不会突出显示其他已选择的行。

是我做错了什么,还是需要手动更改背景?如果是,怎么办?

我也试过 listView.setSelector(android.R.drawable.list_selector_background); 这是一个真正的选择器,包含不同状态的项目。不幸的是,它仍然只适用于最近选择的 ListView 项。

public class MyActivity extends ListActivity {

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        // The list is generated here

        ListView listView = getListView();
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

        listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
            // implements empty methods
        }
    }
}

谢谢!

最佳答案

在我看来应该可以按照描述的方式进行,但不幸的是它没有。

到目前为止,我发现您必须使用 XML 资源来描述当项目的“状态”为“已激活”时背景的外观。

在“res/drawable/”目录中创建一个名为“list_item_background_activated.xml”的文件。

在其中定义类型选择器的根元素:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item 
    android:state_activated="true"
    android:drawable="@android:color/darker_gray" />

</selector>

现在您应该修改相关资源(定义 ListItem 外观的资源)以引用此可绘制对象:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_item_background_activated" >
    ...
</RelativeLayout>

关于android - 在上下文操作模式下选择时,ListView 项目在视觉上不会变为 "highlighted",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15822243/

相关文章:

android - 如何访问小部件类中的 sqlite 数据库?

android - ImageButton android的OnClickListener

android - 发送短信时空指针异常,Parcel.ReadException?

按任意键时android编辑文本隐藏在键盘下方

android - SharedPreferences 或 SQlite

android - 无法让省略号在 Android 上工作

java - 当按钮具有特定的当前文本时如何更改按钮上的文本(Android Studio/Java XML)

android - firebase 监听器在哪里监听 RAM 或磁盘?

android - 如何将 View 动态添加到已在 xml 布局中声明的 RelativeLayout?

android - setBackgroundColor 方法,安卓