0

我希望我的 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>
4

3 回答 3

2

使您的 LinearLayout 的背景成为可绘制的选择器

<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 是定义布局背景的可绘制对象

希望这可以帮助

于 2012-09-24T22:18:21.603 回答
2

您的背景可绘制对象应该是一个状态列表,对于不同的状态(例如,按下、聚焦,两者都没有)具有不同的图形。

编辑:要使用纯色,您可以这样做:

<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>
于 2012-09-24T22:21:05.523 回答
1

我看到发生了什么,但首先

  • 大多数只有一个孩子的布局可以被删除,
  • TableLayout 和 TableRow 也都基于 LinearLayout 类。

所以实际上你有三个LinearLayouts 你只需要一个

问题:
我假设这条线设置了一个覆盖整个布局的新背景颜色:

android:background="@drawable/plaincell"

这也覆盖或覆盖了默认的 ListView 颜色选择器。如果您要更改屏幕上每个 UI 元素的背景和文本颜色属性,
您可能需要查看样式和主题。如果您在主题中设置这些属性,那么您不需要创建新的颜色选择器来执行旧颜色选择器已经完成的操作。

于 2012-09-24T22:34:31.903 回答