gpt4 book ai didi

android - 使用按钮更改 listView 上的文本颜色

转载 作者:行者123 更新时间:2023-11-30 04:30:21 25 4
gpt4 key购买 nike

我正在创建一个带有按钮的 ListView,但遇到了一些问题。
我的 Activity 需要为每个操作执行 2 个不同的操作(ItemClickbuttonClick)。

我假设:

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项的按钮。

问题出在哪里?

主要屏幕:箭头设备选择的列表项(文本黑色,ok!)

listitem selected by emulator arrow

列表项被手指点击(文本红色,应该是黑色,失败)

listitem clicked by finger(using device)

答案:

android:duplicateParentState="true" 添加到 TextView。

最佳答案

我不明白,你的布局是可点击的,但你有按钮?是选择行的按钮吗?

如果我是你,我不会让任何东西都可以点击,除了按钮。 android:focusable="false"android:clickable="false"

然后您可以在按钮监听器中手动设置行上的选择:

getListView().setSelection(position);

让我知道这是否有效。

[编辑] 真正的问题是 TextView 需要可点击,而不是布局。

关于android - 使用按钮更改 listView 上的文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7843993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com