这更“为什么?”比“怎么样?”问题,因为我知道这个问题的一个简单的解决方法。但我想知道我将要描述的行为背后的逻辑是什么。
我有一个样式声明和一些ListViews。我想改变分频器的外观。我使用了以下声明:
<style name="Theme.MyApp.Dark" parent="@style/Theme.Sherlock">
<item name="android:dividerHeight">4px</item>
<item name="android:divider">#123456</item>
</style>
令我高兴的是,只应用了分隔线的高度。我已经尝试用alpha值(#12345678)和渐变drawable指定颜色,没有任何效果。 ListViews声明如下:
<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
一样?这有什么理由吗?我找不到解释,错误报告或类似的东西让我理解这种行为。
编辑:主题全局应用于清单文件:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="org.my.app" android:theme="@style/Theme.MyApp.Dark">
答案 0 :(得分:5)
它可以从主题设置,但有一个小技巧:
<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;)
答案 1 :(得分:1)
你必须在Lisview中提到这样的风格
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list"
style = "@style/Theme.MyApp.Dark"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
否则这不会起作用..