【发布时间】:2011-10-21 01:05:25
【问题描述】:
我正在创建一个带有按钮的 ListView,但遇到了一些问题。
我的活动需要为每个操作执行 2 个不同的操作(ItemClick 和 buttonClick)。
我假设:
1 – 因为我在列表项上有按钮,所以我不能使用OnItemClickListener()。对吧?
所以,我为列表项创建布局并使其可点击。
listitem_textview_button.xml:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:background="@drawable/selector_list_item">
<Button
android:id="@+id/listitem_textview_button_btn"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:text="@string/edit" />
<TextView
android:id="@+id/listitem_textview_button_txv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:textSize="14sp"
android:textColor="@drawable/selector_textview"
android:minHeight="?android:attr/listPreferredItemHeight"
android:layout_toRightOf="@+id/listitem_single_line_w_button_btn" />
</RelativeLayout>
请注意,我已经为布局创建了一个选择器,并为 Textview 创建了一个 stateColorList。
selector_list_item.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_window_focused="false"
android:drawable="@color/transparent" />
<item
android:state_focused="true"
android:state_enabled="false"
android:state_pressed="true"
android:drawable="@drawable/shape_list_item_disabled" />
<item
android:state_focused="true"
android:state_enabled="false"
android:drawable="@drawable/shape_list_item_disabled" />
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/shape_list_item_transition" />
<item
android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/shape_list_item_transition" />
<item
android:state_focused="true"
android:drawable="@drawable/shape_list_item_focus" />
</selector>
selector_textview.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@color/black" />
<item android:state_focused="true" android:color="@color/black" />
<item android:state_pressed="true" android:color="@color/black" />
<item android:color="@color/red" />
</selector>
2 – 这是使用自定义项(包括 TextView 颜色)实现 ListView 的最佳方式?
当我点击item时,上面的代码并没有改变textViews的颜色。
在一些测试中,我看到文本颜色在以下情况下发生了变化:
1.使用模拟器的箭头。
2.移除ListView项的按钮。
问题出在哪里?
主屏幕: 箭头设备选择的列表项(黑色文本,ok!)
手指点击的列表项(文本为红色,应为黑色,失败)
回答:
将android:duplicateParentState="true" 添加到TextView。
【问题讨论】:
-
如果在使用模拟器箭头时文本颜色发生变化,这可能意味着您没有设置正确的属性?我注意到您已经在
RelativeLayout上设置了可点击属性,但您的 textview 不是需要clickable吗?或者您能否制作一个界面的打印屏幕,以说明您想要实现的目标? -
@SanFrancesco,查看添加的示例
标签: android android-layout android-listview textview