我希望我的ListView中的单元格能够在触摸时突出显示(就像它们通常使用未修改的ListView一样)。如何使用我修改过的单元格做到这一点?
这是我的细胞的样子:
这是我的单元格的XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="fill_parent"
android:layout_height="34dip"
android:stretchColumns="0"
android:divider="@null"
>
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/plaincell"
android:divider="@null" >
<TextView
android:id="@+id/txtKey"
android:text="Some text"
android:textSize="16dip"
android:textStyle="bold"
android:layout_marginLeft="8dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left|center_vertical"
android:layout_weight="1.0"
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp"
android:textColor="@color/black"
/>
<TextView
android:id="@+id/txtValue"
android:text="Some text"
android:textSize="16dip"
android:layout_marginRight="8dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right|center_vertical"
android:layout_weight="1.0"
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp"
android:textColor="@color/darkblue"
/>
</TableRow>
</TableLayout>
</LinearLayout>
答案 0 :(得分:2)
使LinearLayout的背景成为选择器drawable
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/myClickedStateDrawable" android:state_pressed="true" />
<item android:drawable="@drawable/myNonClickedStateDrawable" />
</selector>
其中myClickedStateDrawable,myNonClickedStateDrawable是可绘制的,用于定义布局的背景
希望这会有所帮助
答案 1 :(得分:2)
你的背景可绘制应该是state list,它具有不同状态的不同图形(例如,按下,聚焦,都没有)。
编辑:要使用纯色,您可以执行以下操作:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/pressedcolor" android:state_pressed="true" />
<item android:drawable="@color/unpressedcolor" />
</selector>
然后,您可以在资源文件中定义自己的颜色:
<resources>
<color name="pressedcolor">#ff0000</color>
<color name="unpressedcolor">#0000ff</color>
</resources>
答案 2 :(得分:1)
我看到发生了什么,但首先:
所以你真的有三个 LinearLayouts,你只需要一个。
问题:
我假设这条线设置了一个覆盖整个布局的新背景颜色:
android:background="@drawable/plaincell"
这也涵盖或覆盖默认的ListView颜色选择器 如果要更改屏幕上每个UI元素的背景和文本颜色属性,您可能需要查看Styles and Themes。如果在主题中设置这些属性,则不需要创建新的颜色选择器来执行旧颜色选择器已经执行的操作。