我正在创建一个带按钮的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的最佳方法吗?
当我点击项目时,上面的代码不会改变textViews的颜色。
在某些测试中,我看到文字颜色在以下情况下发生变化:
1.使用模拟器的箭头。
2.删除ListView项目的按钮。
问题出在哪里?
prinscreens: listitem由箭头设备选择(文字黑色,确定!)
listitem用手指点击(文字红色,应为黑色,失败)
答案:
将android:duplicateParentState="true"
添加到TextView。
答案 0 :(得分:1)
我不明白,你的布局是可点击的,但你有按钮?是用于选择行的按钮吗?
如果我是你,除按钮外我不会点击任何东西。 android:focusable =“false”android:clickable =“false”
然后您可以在按钮侦听器中手动设置选择:
getListView().setSelection(position);
让我知道这是否有效。
[编辑]真正的问题是TextView需要是可点击的,而不是布局。