Android ListView.setChoiceMode和自定义列表项
在一个Android ListView.setChoiceMode和自定义列表项,android,android-listview,actionbarsherlock,Android,Android Listview,Actionbarsherlock,在一个SherlockListFragment中,我使用android.R.layout.simple\u list\u item\u activated\u 1来显示一行文本。我正在使用以下命令获取列表视图,以在选中时自动突出显示列表项 getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 这个很好用 然而,我有另一个SherlockListFragment,它使用一个列表项布局,其中包含两个TextView小部件,如下所示 &l
SherlockListFragment
中,我使用android.R.layout.simple\u list\u item\u activated\u 1
来显示一行文本。我正在使用以下命令获取列表视图
,以在选中时自动突出显示列表项
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
这个很好用
然而,我有另一个SherlockListFragment
,它使用一个列表项布局,其中包含两个TextView
小部件,如下所示
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<TextView
android:id="@+id/gl_item_single_start_time_short"
...
>
</TextView>
<TextView
android:id="@+id/gl_item_single_title"
...
>
</TextView>
</RelativeLayout>
我想做的是在选择列表项时自动突出显示第二个TextView
(gl\u item\u single\u title
)
问题是——我该怎么做才能做到这一点?是否有一个属性可以设置在TextView
上,或者对于适配器返回的视图,我必须自己处理这个属性
我正在使用android.R.layout.simple\u list\u item\u activated\u 1显示单行文本
我假设您的意思是,您使用的是从android.R.layout.simple\u list\u item\u activated\u 1复制的自己的布局,因为 我想做的是在选择列表项时自动突出显示第二个文本视图(gl_item_single_title) 我假设您的意思是希望它表现为android.R.layout的
simple\u list\u item\u activated\u 1
,并持续高亮显示供您选择
我该怎么做才能做到这一点
复制android.R.layout.simple\u list\u item\u activated\u 2
并根据需要进行修改。或者,在其他一些布局上使用android:background=“?android:attr/activatedBackgroundIndicator”
。但是请注意,这只适用于API级别11+
但是,如果您想要适用于所有API级别的产品,请执行以下操作:
首先,在res/values-v11/
目录中使用一个主题扩展应用程序的主题,该主题定义了一些新的样式(例如,激活的
):
最后,将该样式应用于行布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip"
android:minHeight="?android:attr/listPreferredItemHeight"
style="@style/activated"
>
<ImageView android:id="@+id/flag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|left"
android:paddingRight="4dip"
/>
<TextView android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|right"
android:textSize="5mm"
/>
</LinearLayout>
“我想您的意思是您正在使用自己的布局…”-不,这是问题的一部分。目前,这只是一个“概念验证”——我有几个测试人员,他们都在使用API级别为11或更高的设备,但我最终希望支持API 8,但还没有时间复制布局文件来修改它们以允许这样做。我基本上只是想先了解一下机制。非常感谢您的指导。@Squonk:在这种情况下,请尝试一下android.R.layout.simple_list_item_activated_2——如果它看起来适合短期使用,应该从“activated”的角度来看它“正常工作”。再次感谢。是的,我认为android.R.layout.simple\u list\u item\u activated\u 2
短期内可以用于演示目的。
<style name="activated">
</style>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip"
android:minHeight="?android:attr/listPreferredItemHeight"
style="@style/activated"
>
<ImageView android:id="@+id/flag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|left"
android:paddingRight="4dip"
/>
<TextView android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|right"
android:textSize="5mm"
/>
</LinearLayout>