7

我在我的应用程序中创建了几种字体样式。

如何将这些样式添加到视图中?- 1) 使用样式属性 2) 使用 textAppearance。

使用样式不是一个选项,因为视图可能具有其他属性(边距、填充、最小宽度等 - 我不能为视图指定 2 种样式),所以我需要单独指定与文本相关的属性,但android:textColor在这里不起作用:

样式.xml:

<style name="TextAppearance.baseText" parent="@android:style/TextAppearance">
    <item name="android:textAppearance">?android:textAppearanceSmall</item>
    <item name="android:typeface">sans</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textSize">15sp</item> 
</style>

布局.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="65dp"
      android:orientation="horizontal" >

      <Button
           android:id="@+id/backButton"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="@string/sometext"
           android:textAppearance="@style/TextAppearance.baseText"/>
</RelativeLayout>

为什么它不起作用?如何在 textappearance 中指定 textcolor?

4

3 回答 3

13

textColor正如 Oderik 在评论中提到的,Button 视图的属性有一个默认值。此值覆盖通过属性textColor设置的任何值。textAppearance因此,您有两种选择:

  • 将样式中的 textColor 设置为 @null:

    <style name="Application.Button">   
      <item name="android:textAppearance">@style/Application.Text.Medium.White</item>
      <item name="android:textColor">@null</item> 
    </style>
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/Application.Button" />
    
  • 在 Button XML 中将 textColor 设置为 @null:

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/Application.Button"   
    android:textColor="@null" />
    
于 2014-01-14T00:46:35.307 回答
8

有用。您的文本颜色为白色 - 与默认颜色相同。放在那里任何其他颜色<item name="android:textColor">#AA6699</item>,你会看到不同。第二件事是您正在尝试在文本外观中设置文本外观 - 这很有意义。如果您想设置小写字母,请使用 parentparent="@android:style/TextAppearance.Small并删除行<item name="android:textAppearance">?android:textAppearanceSmall</item> 第三件事是您想要小写字母并放置额外的 textSize - 没有意义。试试这个,对我有用:

<style name="BaseText" parent="@android:style/TextAppearance.Small">
        <item name="android:typeface">sans</item>
        <item name="android:textColor">#AA7755</item>
  </style>

如果您想设置所有样式:

<style name="BaseText" parent="@android:style/TextAppearance.Large">
        <item name="android:typeface">sans</item>
        <item name="android:textColor">#AA7755</item>
    </style>

   <style name="BaseText.Margins">
       <item name="android:layout_margin">10dip</item>
   </style>

BaseText.Margins 从 BaseText 继承。然后你可以使用:

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        style="@style/BaseText.Margins" />
于 2012-06-27T12:49:25.950 回答
7

如果你想使用android:TextAppearance而不是style:设置你的android:textColor,你需要设置android:textColor=@null你的TextView

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:textAppearance="@style/TextAppearance.AppCompat.Medium.MySubheader"
    android:textColor="@null"
    tools:text="Section" />

然后它将正确地从您的android:TextAppearance

<style name="TextAppearance.AppCompat.Medium.MySubheader">
    <item name="android:fontFamily">sans-serif-medium</item>
    <item name="android:textSize">16sp</item>
    <item name="android:textColor">@color/black_54</item>
</style>
于 2015-09-18T14:17:05.300 回答