带有九个补丁项目背景问题的ListView

Los*_*311 2 android nine-patch android-listview android-selector

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


我一直在墙上撞了一会儿.以下帖子阐明了这一主题,但未能解决我的问题: Android ListView状态列表未通过自定义选择器显示默认项目背景ListView项目背景

当我选择列表项时,正确的九补丁背景显示完美,但我无法获得最初显示的默认九补丁背景.在我看来,我需要以某种方式设置默认项目背景,但我无法弄清楚如何这样做.

列表显示:

<?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>
Run Code Online (Sandbox Code Playgroud)

选择:

<?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>
Run Code Online (Sandbox Code Playgroud)

背景:

<?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>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我已经从参考文献中删除了示例.

您可能还注意到后台选择器未在任何位置引用.我开始在随机的地方扔它(如果应用程序编译添加要么没有效果或导致强制关闭)

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

有没有人有任何想法让这个荒谬耗时的功能工作?

Los*_*311 5

我本来要删除这个帖子,但我不能这样,我会看看我是不是可以用这个作为不做的例子:)

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

我在这里尝试做的是设置列表项的背景,android:background属性不起作用.您可能已经注意到项目XML缺失了,这是因为我的头脑中缺少它!(我在无数小时内从未触及过这个'问题',因此该线路android:background="@drawable/shop_list_selector"进入物品的属性,一切都很时髦.(请记住上面的XML是非常错误的,所以不要使用它!)

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