Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ListView.setChoiceMode和自定义列表项_Android_Android Listview_Actionbarsherlock - Fatal编程技术网

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>