更改listSeparatorTextViewStyle中使用的线条颜色

Che*_*eng 10 android

我有以下代码

        <TextView
            android:text="@string/hello"
            style="?android:attr/listSeparatorTextViewStyle" />
Run Code Online (Sandbox Code Playgroud)

我会得到以下效果.

在此输入图像描述

但是,我对色线感到不满意.我想有类似的东西

在此输入图像描述

我希望它在holo中有蓝色线条.我尝试以下自定义样式.

<style name="MyOwnListSeperatorTextViewStyle">        
<item name="android:background">@android:drawable/list_section_divider_holo_light</item>        
<item name="android:textAllCaps">true</item>    

<!-- Copy from Widget.TextView.ListSeparator -->

<item name="android:background">@android:drawable/dark_header_dither</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">?textColorSecondary</item>
    <item name="android:textSize">14sp</item>
    <item name="android:gravity">center_vertical</item>
    <item name="android:paddingLeft">8dip</item>        
</style>
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为我得到以下错误.

错误:错误:资源不公开.(在'android:background',值为'@ android:drawable/dark_header_dither').

有想法如何更改使用的线条颜色listSeparatorTextViewStyle

Dan*_*ith 15

我需要这样做来覆盖典型的Holo Spinner风格(我不想要带下划线的项目 - 我只是想要箭头),我认为这可以用完全相同的方式覆盖:

首先,你想要在android样式源中找到你想要覆盖的项目.这里有一个非常有用的SO答案,其中包含所有样式(以及覆盖它们的名称):将Dialog主题设置为Android中的父主题

我相信你的是以下几行:

<item name="listSeparatorTextViewStyle">@android:style/Widget.Holo.Light.TextView.ListSeparator</item>
Run Code Online (Sandbox Code Playgroud)

这让我们找到了Widget.Holo.Light.TextView.ListSeparator风格的旅程,它应该存在于你自己的计算机上的某个地方!但我会轻松一点,只是简单地说:

<style name="Widget.Holo.Light.TextView.ListSeparator" parent="Widget.TextView.ListSeparator">
    <item name="android:background">@android:drawable/list_section_divider_holo_light</item>
</style>
Run Code Online (Sandbox Code Playgroud)

现在,你可能想离开不够孤独,只是看那个背景绘制.你会发现它是一个灰色的9patch文件,看起来像你想要避免的阴险灰线.

我们需要覆盖它.我确信有很多方法可以做到这一点,但我通过自定义应用程序的主题来实现.这是themes.xml文件:

<style name="AppTheme" parent="@android:style/Theme.Holo.Light.NoActionBar">
    <item name="android:listSeparatorTextViewStyle">@style/MyOwnListSeperatorTextViewStyle</item>
</style>

<style name="MyOwnListSeperatorTextViewStyle" parent="Widget.TextView.ListSeparator">
    <item name="android:background">@drawable/make_your_own_blue_9_patch_here</item>
</style>
Run Code Online (Sandbox Code Playgroud)

请注意我们如何使用listSeparatorTextViewStyle之前的SO帖子?而自定义样式的父级是Widget.TextView.ListSeparator来自android的样式源?一切都非常重要.

现在你只需要将这个主题应用到你的应用程序,但我假设你已经有了一个主题.如果您还没有,那么您需要制作自己的9patch,但我只需查看计算机上的list_section_divider_holo_light.9.png文件,并将灰色部分变为蓝色,然后复制并将其放入您自己的文件中drawables文件夹.

希望这有效,并且很有帮助!

  • 我收到以下错误:检索项目的父项时出错:找不到与给定名称"@android:style/Widget.TextView.ListSeparator"匹配的资源.styles.xml (11认同)