我有一个带有自定义项目的列表视图,列表视图中的项目包括:文本视图和图像按钮,我已经为带有选择器的图像按钮设置了背景。我的问题是,当我点击列表视图中的项目,图像按钮更改状态按(单击事件不触发),我不想这样,我想图像按钮更改状态只有当我按它时按下。对我有什么解决方案?谢谢!
项目行的布局
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:background="@drawable/song_list_selector" >
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_alignParentLeft="true"
android:background="@android:color/transparent"
android:checked="true"
android:textSize="12sp"
android:textOn="@string/favorite"
android:textOff="@string/favorite"
android:textColor="@drawable/text_color_toggle_button"
android:id="@+id/toggle_favorite"
android:clickable="false"
android:focusable="false"/>
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_alignParentRight="true"
android:background="@android:color/transparent"
android:checked="false"
android:textSize="12sp"
android:textColor="@drawable/text_color_toggle_button"
android:textOn="@string/offline"
android:textOff="@string/online"
android:id="@+id/toggle_offline"
android:clickable="false"
android:focusable="false"/>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_menu"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:padding="10dp"
android:background="@drawable/bg_button_song_menu"
android:contentDescription="@string/song_menu"
android:id="@+id/btn_song_menu"
android:focusable="false"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:layout_below="@id/toggle_favorite"
android:layout_toLeftOf="@id/btn_song_menu"
android:text="999 Doa Hong"
android:textColor="#0e7491"
android:textSize="20sp"
android:id="@+id/lbl_song_name"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="Nhac chi chuyen xua, da xa roi nhu giac mo..."
android:textSize="12sp"
android:layout_below="@id/lbl_song_name"
android:layout_toLeftOf="@id/btn_song_menu"
android:id="@+id/lbl_song_lyric"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:drawableLeft="@drawable/ic_microphone"
android:drawablePadding="2dp"
android:textSize="12sp"
android:text="1,478"
android:layout_marginTop="5dp"
android:layout_below="@id/lbl_song_lyric"
android:id="@+id/lbl_sing_times"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:drawableLeft="@drawable/ic_save"
android:drawablePadding="2dp"
android:textSize="12sp"
android:text="548"
android:layout_marginTop="5dp"
android:layout_below="@id/lbl_song_lyric"
android:id="@+id/lbl_save_times"/>
</RelativeLayout>
</RelativeLayout>
listview的布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SongListActivity" >
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="3dp"
android:paddingBottom="3dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:divider="@null"
android:listSelector="#00000000"
android:cacheColorHint="#00000000"
android:id="@+id/list_song"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:textStyle="italic"
android:id="@+id/lbl_no_song"
android:layout_centerInParent="true"
android:visibility="gone"
android:textColor="#b6b6b6"/>
</RelativeLayout>
答案 0 :(得分:0)
默认情况下,ListView会消耗所有触摸事件,并将重复状态传播给其子级。为了避免这种情况,你应该在ListView中将focusable属性设置为'false'。
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="false"
android:focusableInTouchMode="false"
/>
答案 1 :(得分:0)
这是因为Listitem布局中ImageButton的可聚焦性。
将以下行添加到ListView的项目布局的根布局。
android:descendantFocusability="blocksDescendants"