【问题标题】:Switching Styles切换风格
【发布时间】:2012-02-19 07:30:14
【问题描述】:

假设我有多个用于主题的styles.xml 文件(当然名称不同)。是否可以选择应用应从哪个文件中提取?

白色风格:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="mybutton">
        <item name="android:layout_width">45dp</item>
        <item name="android:layout_height">fill_parent</item>
        <item name="android:textColor">#202020</item>
        <item name="android:textSize">20dp</item>
        <item name="android:textStyle">bold</item>
        <item name="android:background">@drawable/white_btnbg</item>
    </style>

...

黑色风格:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <style name="mybutton">
        <item name="android:layout_width">45dp</item>
        <item name="android:layout_height">fill_parent</item>
        <item name="android:textColor">#FFFFFF</item>
        <item name="android:textSize">20dp</item>
        <item name="android:textStyle">bold</item>
        <item name="android:background">@drawable/black_btnbg</item>
    </style>

...

然后,在我的布局 xml 中,我所有按钮的样式都将设置为“mybutton”,并且根据用户选择的主题,它将从协调文件中提取。 由于无法在运行时更改视图的样式,是否可以这样做?还是有更好的方法(我确定有)来改变样式?

【问题讨论】:

    标签: android android-theme android-styles


    【解决方案1】:

    使用具有不同名称的多种样式。然后您可以通过编程方式设置背景:

    Button b = new Button(this);
    b.setBackgroundResource(R.drawable.blabla);
    

    【讨论】:

    • 我知道,但这不是问题。
    • 您无法在运行时更改样式,但您可以更改视图使用的样式。因此您可以使用多种样式,并且可以通过编程方式决定在运行时使用哪一种。
    • 我想念什么吗? :) 您可以创建不同的 xml 文件来定义按钮的样式。把它们放在drawable文件夹下。当用户选择主题时,例如按钮的 onClick,以编程方式更改应用程序中所有按钮的背景。
    • 不,你理解正确。但要这样做,我必须一一更改背景、文本颜色等。我想知道是否有更简单的方法。
    猜你喜欢
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2012-03-02
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多