为元素引用多个样式的正确方法[android]

时间:2015-05-26 10:24:07

标签: android android-layout

我希望我的元素能够引用/使用多种样式。这可能吗 ?或者这样做的正确方法是什么?

<TextView
   style="@style/bold, @style/red"
   ...
/>

3 个答案:

答案 0 :(得分:0)

如上所述,你不能使用样式,你不能将多个样式应用于单个元素。你需要创建包含两个样式的样式或创建继承父样式的单一样式风格。

尝试这样的事情:

<TextView
    style="@style/txtviewstyle"
   ...
/>
style.xml中的

<style 
    name="txtviewstyle">
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">@color/red</item>
</style>

或者您可以尝试:

 String text = "<font color=#ff0000>Red Color</font>";
 yourtextview.setText(Html.fromHtml(text));
 yourtextview.setTypeface(textView.getTypeface(), Typeface.BOLD);

答案 1 :(得分:0)

请参阅Android文档中的this

您通常在布局文件中指定这样的样式

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#00FF00"
    android:typeface="monospace"
    android:text="@string/hello" />

将样式移至styles.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CodeFont" parent="@android:style/TextAppearance.Medium">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#00FF00</item>
        <item name="android:typeface">monospace</item>
    </style>
</resources>

将样式应用于此类视图

<TextView
    style="@style/CodeFont"
    android:text="@string/hello" />

如果您想要具有不同文字颜色的确切样式,请使用以下方法而不是复制样式

<style name="CodeFont.Red">
        <item name="android:textColor">#FF0000</item>
    </style>

答案 2 :(得分:0)

尝试使用此代码

   <TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textStyle="italic"

    android:textStyle="italic|bold"

    />

或者也可以将此代码用于相同的要求

 <style name="RedHUGEText" parent="@android:style/Widget.TextView">
<item name="android:textSize">@dimen/text_size_huge</item>
<item name="android:textColor">@color/red</item>
<item name="android:textStyle">bold</item>
</style>

<TextView android:id="@+id/text_view_title" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content 
android:text="FOO" 
style="@style/RedHUGEText" />

或者您也可以使用这种方式来满足同样的要求

tv.setTypeface(null, Typeface.BOLD);
tv.setTypeface(null, Typeface.ITALIC);
tv.setTypeface(null, Typeface.BOLD_ITALIC);
tv.setTypeface(null, Typeface.NORMAL);