0

SherlockListFragmentandroid.R.layout.simple_list_item_activated_1用来显示单行文本的情况下。我正在使用以下内容ListView在选择时自动突出显示列表项...

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_item_single_title

问题是——我必须做些什么才能做到这一点?是否有我可以设置的属性,TextView或者我必须自己处理适配器返回的视图?

4

1 回答 1

1

我正在使用 android.R.layout.simple_list_item_activated_1 来显示单行文本。

我假设您的意思是您使用的是从 复制的自己的布局android.R.layout.simple_list_item_activated_1,因为该资源仅存在于 API Level 11+ 上

我想做的是在选择列表项时自动突出显示第二个 TextView (gl_item_single_title)。

我假设您的意思是您希望它的行为android.R.layout.simple_list_item_activated_1与您的选择一样,持续突出显示。

我该怎么做才能做到这一点?

复制android.R.layout.simple_list_item_activated_2和修改以适应。或者,android:background="?android:attr/activatedBackgroundIndicator"在其他布局上使用。但请注意,这仅适用于 API 级别 11+。

但是,如果您想要适用于所有 API 级别的东西:

首先,在一个res/values-v11/目录中扩展您的应用程序的主题,该主题定义了一些新样式(例如,activated):

<style name="activated" parent="android:Theme.Holo">
  <item name="android:background">?android:attr/activatedBackgroundIndicator</item>
</style>

然后,在 中res/values/,将相同的样式定义为无操作:

<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>
于 2013-04-29T22:42:52.867 回答