这更像是“为什么?”比“怎么样?”问题,因为我知道该问题的简单解决方法。但我想知道我要描述的行为背后的逻辑是什么。
我有一个样式声明和一些 ListView。我想改变分隔线的外观。我使用了以下声明:
<style name="Theme.MyApp.Dark" parent="@style/Theme.Sherlock">
<item name="android:dividerHeight">4px</item>
<item name="android:divider">#123456</item>
</style>
让我觉得有趣的是,只应用了分隔线的高度。我已经尝试使用 alpha 值 (#12345678) 和渐变绘制来指定颜色,但没有任何效果。 ListView 声明如下:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
因此,如您所见,没有任何东西可以覆盖样式声明。只有在 ListView 声明中直接指定时,我才能更改分隔符:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list"
android:divider="#123456"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
使用我新获得的 specifying colors depending on theme selected 技能,我可以很容易地解决这个问题 - 我只需要为每个列表声明带有自定义颜色属性的 android:divider
。
但是为什么我不能改变样式中的android:divider
,就像android:dividerHeight
一样?有什么原因吗?我找不到能让我理解这种行为的解释、错误报告或类似的东西。
编辑:主题在 list 文件中全局应用:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="org.my.app" android:theme="@style/Theme.MyApp.Dark">
最佳答案
它可以从主题中设置,但有一个小技巧:
<style name="MyTheme" parent="AppTheme">
<item name="android:listViewStyle">@style/MyListViewStyle</item>
</style>
<style name="MyListViewStyle" parent="@android:style/Widget.ListView">
<item name="android:divider">#F00</item>
<item name="android:dividerHeight">1px</item>
</style>
Rgrds ;)
关于android - 在样式声明中指定时不应用 ListView 分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8636692/