【问题标题】:How do I style selected item in Android ListView?如何在 Android ListView 中设置所选项目的样式?
【发布时间】:2010-10-29 11:21:08
【问题描述】:

我是一名 Android 新手,正在尝试学习 UI 方面的知识,这让我深有体会。这就是我现在所拥有的:

breeds_listing.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" android:layout_height="wrap_content">
    <ListView android:id="@+id/breedsListView"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:dividerHeight="0px" android:divider="#00000000"></ListView>
</LinearLayout>

breeds_listing_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:background="@drawable/list_item_background"
    android:orientation="horizontal" >
    <TextView android:id="@+id/allbreeds_single_item"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:gravity="center_horizontal"></TextView>
</LinearLayout>

list_item_background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#043402" />
    <stroke android:width="3dp" color="#ffff8080" />
    <corners android:radius="8dp" />
    <padding android:left="10dp" android:top="10dp" android:right="10dp"
        android:bottom="10dp" />
</shape>

我正在努力弄清楚如何设置所选项目的样式?目前,所选项目有一个可怕的橙色背景,在圆角绿色矩形下方,呈现橙色轮廓效果。我确信我没有按照最佳做法做事,因此我们将不胜感激任何建议或改进。

非常感谢, D.

【问题讨论】:

    标签: android listview coding-style selected


    【解决方案1】:

    我这样做:

     <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
       <item android:state_pressed="true">
           <shape  >
             <solid android:color="#929292" />
           </shape>
       </item>
    
    
    
       <item>
         <shape  >
            <solid android:color="#FFFFFF" />
         </shape>
       </item>
    
     </selector>
    

    所以你可以使用这个属性android:state_pressed="true"

    在我的示例中,单元格背景只会是白色,按下时为灰色。

    希望对你有帮助!

    【讨论】:

    • 是的 - 我很怕忘记投票或接受答案!肯定会解决这个问题......刚刚回顾了我的问题并标记了对我有用的问题。感谢您的温柔提醒 :o)
    • 耶!我让它工作了——感谢你让我克服了思维障碍!不知道为什么我没有想到这一点,因为我们在我日常工作的 WPF 世界中做了非常相似的事情!这只是找到正确使用状态的问题:o)
    • 好的,我现在已经为背景做了这个——下一个我不太明白的问题是如何为文本指定样式?我是否需要使用选择器创建另一个 XML 文件来指定文本属性?
    • 是的,另一个带有选择器的 XML 文件。你在这里有一个例子:developer.android.com/guide/topics/resources/…
    【解决方案2】:

    您必须使用StateListDrawable

    您可以找到 ListView 项目的示例here

    如果您在选择项目时想要某种颜色/可绘制,请使用android:state_focused="true"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      相关资源
      最近更新 更多