2

警告:此问题中的 XML 是错误的,请在混淆之前阅读答案!


我已经把头撞在墙上有一段时间了。以下帖子阐明了该主题,但未能解决我的问题: Android ListView State List not show default item background and ListView item background via custom selector

当我选择列表项时,正确的九补丁背景完美显示,但我无法让默认的九补丁背景最初显示。在我看来,我需要以某种方式设置默认项目背景,但我不知道该怎么做。

列表显示:

<?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="fill_parent"
  android:orientation="vertical">
  <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/shopListHeader"
    />
  <ListView
    android:id="@+id/shopList"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:dividerHeight="0px"
    android:divider="#FFFFFFFF"
    android:listSelector="@drawable/shop_list_selector"
    />
</LinearLayout>

选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:visible="true">

    <!-- the list items are enabled and being pressed -->
    <item
        android:state_pressed="true"
        android:drawable="@drawable/shop_list_item_pressed" />

    <item
        android:state_selected="true"
        android:textColor="#FFFFFFFF" />
</selector>

背景:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:visible="true">

    <item
      android:state_selected="true"
      android:drawable="@android:color/transparent" />

    <item
        android:drawable="@drawable/shop_list_item" />
</selector>

如您所见,我已经简化了参考文献中的示例。

您可能还注意到背景选择器没有在任何地方被引用。我开始把它扔在随机的地方(如果应用程序编译添加没有效果或导致强制关闭)

我还尝试在选择但未按下项目时阻止文本颜色变为黑色和灰色(可以通过滚动列表来完成)。由于我的背景在中心是黑色的,因此文本在选择时会部分不可见。据我所知,该添加(选择器中的最后一个项目节点)什么也没做。

有没有人想过让这个非常耗时的功能正常工作?

4

2 回答 2

5

我打算删除这个帖子,但我不能,所以我会看看我是否不能用这个作为不该做的例子:)

首先,在 ListView XML 中:android:listSelector="@drawable/shop_list_selector"
不要那样做!

我在这里尝试做的是设置列表项的背景并且该android:background属性不起作用。您可能已经注意到项目 XML 丢失了,那是因为它在我的脑海中丢失了!(在我为这个“问题”而努力的无数小时里,我从来没有碰过它)所以这条线android:background="@drawable/shop_list_selector"进入了项目的属性,一切都很时髦。(记住上面的 XML 是非常错误的,所以不要使用它!)

...好吧,除了它在现实生活中看起来不像在我的脑海中那么好:(
回到绘图板!!!

于 2011-05-13T22:07:31.177 回答
3

您尚未定义“正常”状态,请参阅此示例

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/blue"
          android:state_pressed="true" />
    <item android:color="@color/red"
          android:state_selected="true" />
    <item android:color="@color/white" />
</selector>

在这里白色是“正常”状态,在这里你可以找到一些关于它的文档。

我希望这有帮助

于 2011-03-24T22:45:27.240 回答