【问题标题】:Change the line color used in listSeparatorTextViewStyle更改 listSeparatorTextViewStyle 中使用的线条颜色
【发布时间】:2012-08-29 05:05:09
【问题描述】:

我有以下代码

        <TextView
            android:text="@string/hello"
            style="?android:attr/listSeparatorTextViewStyle" />

我会得到以下效果。

但是,我对颜色线不满意。我想要类似的东西

我希望它像全息一样有蓝色线条。我尝试以下自定义样式。

<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>

但它不起作用,因为我收到以下错误。

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

知道如何更改listSeparatorTextViewStyle 中使用的线条颜色吗?

【问题讨论】:

  • 您是否尝试实施我的解决方案?我希望它成功了!
  • 对不起。我还没有尝试过,因为这几周我忙于其他事情。一旦我尝试过,肯定会更新这个帖子。

标签: android


【解决方案1】:

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

首先,您要在 android 样式源中找到要覆盖的项目。有一个非常有用的 SO 答案,其中包含所有样式(以及覆盖它们的名称):Set Dialog theme to parent Theme in Android

我相信你的是下面这行:

<item name="listSeparatorTextViewStyle">@android:style/Widget.Holo.Light.TextView.ListSeparator</item>

这将带我们踏上寻找风格 Widget.Holo.Light.TextView.ListSeparator 的旅程,它应该存在于您自己的计算机上的某个位置!但我会让它变得简单,只需 c&p 它:

<style name="Widget.Holo.Light.TextView.ListSeparator" parent="Widget.TextView.ListSeparator">
    <item name="android:background">@android:drawable/list_section_divider_holo_light</item>
</style>

现在,您可能想离开,然后只需看看那个背景可绘制对象。你会发现它是一个灰色的 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>

注意我们如何使用之前 SO 帖子中的 listSeparatorTextViewStyle?自定义样式的父级是来自android样式源的Widget.TextView.ListSeparator?都很重要。

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

希望这可行并且有帮助!

【讨论】:

  • 我收到以下错误:检索项目的父项时出错:未找到与给定名称“@android:style/Widget.TextView.ListSeparator”匹配的资源。样式.xml
  • 我不确定这有什么区别,但是在指定父样式时,我在“android”之前没有“@”符号
  • 嗨!我遇到了同样的问题,但是当我尝试您的解决方案以及 SO 中的许多其他解决方案时,整个 TextView 的背景都发生了变化,而不仅仅是换行。任何想法我做错了什么?
  • @acrespo 也发现了这个问题。你必须使用 9-patch,否则整个背景都会改变(因为你设置的是android:background,而不是android:divider
猜你喜欢
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多