android - ListFragment 项选中的背景

标签 android listview

所以我设置了一个 ListFragment,其中包含一些打开新 fragment 的选择。我的一部分是想让 ListFragment 中的每个项目(我有大约 6 个)在被选中时设置不同的颜色,我调用我的 getListView().setItemChecked(index, true); 是否可以设置不同的背景或它们都必须相同?谢谢。

最佳答案

是的,您可以让他们使用不同的背景。对于其中的每一个,您都需要构建一个 StateListDrawable,它根据项目的状态选择所需的背景。

如果您查看布局 fragment 演示,列表项使用此布局:

setListAdapter(new ArrayAdapter<String>(getActivity(),
        android.R.layout.simple_list_item_activated_1, Shakespeare.TITLES));

那个布局是:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:background="?android:attr/activatedBackgroundIndicator"
    android:minHeight="?android:attr/listPreferredItemHeight"
/>

这里设置的 android:background 归结为(对于深色非全息主题):

<selector xmlns:android="http://schemas.android.com/apk/res/android"
        android:exitFadeDuration="@android:integer/config_mediumAnimTime">
    <item android:state_activated="true"
            android:drawable="@android:drawable/list_selector_background_selected" />
    <item android:drawable="@color/transparent" />
</selector>

因此,只需编写您自己的可绘制对象,为它们的激活状态使用不同的可绘制对象。

(请注意,我假设您正在使用引入了激活状态的 Honeycomb。对于以前的平台版本,这不是那么干净但也不太难——您需要编写一个布局子类来实现 Checkable 并更改其背景基于选中的状态。)

关于android - ListFragment 项选中的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5331587/

相关文章:

API 19 的 Android 工具栏? (API 21 工作正常)

android - 在相对布局中创建布局

android - 使用搜索栏将数据从主 Activity 传递到 SurfaceView 线程

php - 从php/mysql中获取日期和时间格式的数据,它应该显示在android studio的textview中

android - 自定义 ListVIew 未显示,显示的是空屏幕

php - Yii2 : How to pass additional parameters to listview

css - 如何在 ListView 中轻松创建固定标题 asp.net

android - 通知和应用程序历史记录冲突中的 PendingIntent

android - ListView 的 onEndReached,在 native react 中,没有按预期工作

java - 突出显示选定的 ListView 项