android - 在样式声明中指定时不应用 ListView 分隔符

标签 android

这更像是“为什么?”比“怎么样?”问题,因为我知道该问题的简单解决方法。但我想知道我要描述的行为背后的逻辑是什么。

我有一个样式声明和一些 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/

相关文章:

android - ButterKnife错误:找不到符号方法bind(MyActivity)

android - 使用自定义登录 UI 的移动应用程序中 Gigya 的登录流程

android - Textview无缘无故改变背景颜色

java - 使用动态字符串工作函数?

android - 如何为 viewPager 设置动画

android - 在android中使用PagerSlidingTabStrip时如何默认加载第二个选项卡

android - Request(okhttp3.Request.Builder) 在 okhttp3.Request 中拥有私有(private)访问权限

java - 使用 getSupportActionBar 显示后退按钮

java - 更改位于 Visual Studio 中不同位置的 SDK 的路径

android - Xamarin中的Build错误缺少youtube软件包