我有一个简单的列表,其中包含listselector.
<ListView android:id="@+id/list" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_below="@+id/round"
android:listSelector="#99000000" android:clickable="true" android:cacheColorHint="#00000000" android:background="#00000000">
</ListView>
Run Code Online (Sandbox Code Playgroud)
如您所见,android:listSelector ="#99000000",但"黑色alpha"颜色应用于整个列表,而不是所选项目.
所以这就是我现在所拥有的,但整个列表仍然变黑
:: listview_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:state_focused="true"
android:drawable="@drawable/list_normal" />
<item android:state_pressed="true"
android:drawable="@drawable/list_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/list_active" />
</selector>
Run Code Online (Sandbox Code Playgroud)
:: colors.xml
<resources>
<drawable name="list_normal">#96FFFFFF</drawable>
<drawable name="list_active">#66000000</drawable>
<drawable name="list_pressed">#CA000000</drawable>
</resources>
Run Code Online (Sandbox Code Playgroud)
::我列表中的xml标记
android:listSelector="@drawable/listview_background"
Run Code Online (Sandbox Code Playgroud)
Pil*_*_51 89
我遇到了同样的问题,在查看平台可绘制的XML文件之一时,我注意到了一种方法,通过在XML中创建形状,无需为颜色创建图像文件.
例如,而不是:
<item android:state_focused="true"
android:drawable="@drawable/list_active" />
Run Code Online (Sandbox Code Playgroud)
做:
<item android:state_focused="true">
<shape>
<solid android:color="#66000000" />
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
除了创建简单的彩色绘图外,形状也很灵活,类似于简单的矢量对象.所有细节都可以在这里找到:http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
Eri*_*ric 28
我有同样的问题.我有一个自定义背景图像,我不想制作该背景图像的变体,因为代表所有不同的状态将是乏味的.
所以我想做一件显而易见的事情,有一个半透明的条形覆盖在聚焦的列表项目的顶部,当用户点击"输入"键或其他任何东西时,它闪烁到按下的叠加颜色,这更加引人注目更不透明.
解决方案是远离任何引用listSelector内部颜色的@color或@drawable.我创建了两个3x3像素.png文件.每个都保存有伽玛层.在我的情况下,它是两个相同的颜色,每个颜色在Gimp中混合,颜色层上具有不同的透明度.因此,当您选择一个项目时,您会得到一个25%颜色的叠加层,当您按下它时,您会得到一个50%颜色的png.我将它们放在我的drawable中作为bg_list_item_pressed.png和bg_list_item_highlighted.png
然后我将列表选择器设置为:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Selected -->
<item
android:state_focused="true"
android:state_pressed="false"
android:drawable="@drawable/bg_list_item_highlighted" /> <!-- @drawable/tab_focus -->
<!-- Pressed -->
<item
android:state_pressed="true"
android:drawable="@drawable/bg_list_item_pressed" /> <!-- @drawable/tab_press -->
</selector>
Run Code Online (Sandbox Code Playgroud)
然后我将我的listSelector属性添加到我的布局xml中的ListView:
android:listSelector="@drawable/list_selector"
android:drawSelectorOnTop="true"
Run Code Online (Sandbox Code Playgroud)
现在它正是我希望它工作的方式.包括使用D-pad选择一行,然后按Enter键单击它.获得突出显示和随后按下颜色的确切方式.
wor*_*ked 17
如果要为列表中的每个项目设置行布局,我就是这样做的.请注意设置为listSelector的透明值.(为简洁起见,我删除了colors.xml.)
main.xml中
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:listSelector="#00000000"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
row.xml
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:background="@drawable/list_selector">
...
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
list_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="#66FFFFFF" />
<item android:drawable="#FF666666"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
51351 次 |
最近记录: |