安卓LinearLayout背景选择器

13

我正在通过动态充气将一些LinearLayout视图添加到一个ScrollView中。 我已将添加的LinearLayout的背景设置为选择器列表。 但是,在添加到ScrollView后,当我按选定的视图时,它不显示任何选择器列表的效果。 我使用的示例XML文件为:

选择器文件:selector_file

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/listbg"
      android:state_pressed="true" />
<item android:drawable="@drawable/bgsmall"/>
</selector>

我正在膨胀以下视图并将其添加到l1线性布局中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/selector_file"
android:gravity="center_vertical"
>
<ImageView android:id="@+id/image1" android:layout_width="100dip" android:layout_height="75dip"/>
<TextView android:id="@+id/textitem" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#000000"></TextView>
</LinearLayout>

上述被添加充气视图的ScrollView为:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>

<ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content">
    <LinearLayout android:id="@+id/l1"  android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical">

</LinearLayout>
</ScrollView>
</LinearLayout>

有什么想法...???


如果您将其放在ScrollView之外,它是否有效? - blessanm86
我猜ScrollView中的某些控件会消耗按下事件,因此您的子LinearLayout无法获得触摸。 - anticafe
1
实际上,我正在将选择器设置为LinearLayout的背景。如果我在按钮上使用相同的选择器,它可以工作,但不适用于LinearLayout... - Khawar Raza
1
谢谢大家。我已经找到了解决方案。我在充气文件的LinearLayout中添加了以下行:android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" - Khawar Raza
1
android:clickable="true" 可以解决按钮在被按下时没有按下效果的问题。但是,如果您使用 setSelected(true) ,那么 state_selected drawable 将不再起作用... - User
线性布局上选择器颜色的确切副本 - Paul Lammertsma
1个回答

32

您必须使LinearLayout可点击。

android:clickable="true"

非常感谢,我忘记在相对布局中设置了。 - Zoombie
当我单击一个布局时,所有布局都显示为按下状态。这也解决了那个问题。谢谢! - Dinith Rukshan Kumara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接