我有一个带有自定义布局的ListView。我尝试了几乎所有可以找到的东西,使项目在按下时给出反馈(例如按钮)。我知道我应该使用带有选择器的drawable-res作为根元素。我曾尝试将其用作listSelector和单个视图的背景,但它不起作用。我也尝试了drawSelectorOnTop但没有成功。 所以这是我的布局,也许我做错了什么,但我只能弄明白它是什么。
使用ListView的MainActivity-Layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.stegabach.magicalarm.MainActivity"
tools:ignore="MergeRootFrame"
android:divider="?android:attr/dividerHorizontal"
android:showDividers="middle">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.stegabach.magicalarm.DigitalClockWithoutSeconds
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:textSize="22sp"/>
<TextView
android:id="@+id/next_alarm_view"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"/>
</LinearLayout>
<Button
android:id="@+id/add_alarm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/button_add_alarm"
android:drawableLeft="@drawable/ic_action_add_alarm"
android:gravity="left|center_vertical"
android:onClick="addAlarm"
style="?android:attr/buttonBarButtonStyle"/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:longClickable="true"
android:choiceMode="multipleChoiceModal"
android:drawSelectorOnTop="true"
android:listSelector="#FFF"/>
<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_alarms"/>
</LinearLayout>
项目布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:longClickable="true"
android:clickable="true"
android:background="@drawable/item_selector">
<ToggleButton
android:id="@+id/list_alarm_active_toggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/list_alarm_time"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_toRightOf="@id/list_alarm_active_toggle"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/list_alarm_days"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"/>
最后是drawable的选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="false" android:drawable="@drawable/item_bg_normal"/>
<item android:state_pressed="true" android:drawable="@drawable/item_bg_pressed"/>
</selector>
也许我应该提一下,我使用相同的选择器作为一些ViewGroups的背景,它们的行为应该像按钮一样 - 这样可行。
提前致谢!