【问题标题】:Android: Set style programmatically to custom buttonAndroid:以编程方式将样式设置为自定义按钮
【发布时间】:2017-05-09 14:12:06
【问题描述】:

我有一个扩展 Button 的自定义视图。我只想将 belove 样式设置为这个视图。

    <style name="MultipleButtonStyle" parent="android:Widget.Material.Light.Spinner.Underlined">
        <item name="android:textColor">@android:color/black</item>
        <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
    </style>

为了能够以编程方式设置样式,我尝试了一些方法。但它们对我不起作用。

第一种方式,在自定义按钮的构造函数中使用样式,如下所示:

public class SpinnerButton extends AppCompatButton{

public SpinnerButton (Context context) {
        super(context, null, R.style.MultipleButtonStyle);

    }
}

第二种方法是使用setTextAppearance方法。它对我也不起作用。

if (Build.VERSION.SDK_INT < 23) {
        super.setTextAppearance(getContext(), R.style.MultipleButtonStyle );
    } else {
        super.setTextAppearance(R.style.MultipleButtonStyle);
    }

【问题讨论】:

    标签: android textview android-spinner android-button


    【解决方案1】:

    您的构造函数看起来不错,您是否还覆盖了其他构造函数(例如,使用AttributeSet,在从 XML 膨胀时调用它)?检查THIS 关于Views 构造函数和一些样式的问题

    第二种方式不合适,因为你的风格parent是整个Spinner.Underlined的风格,而不仅仅是TextAppearance的风格。在这种情况下,您应该扩展 @android:style/TextAppearance.Medium(或其他)。如果您选择这种方式,请记住 API23 中已弃用的 setTextAppearance 方法,您可以使用一些帮助程序而不检查操作系统版本:

    TextViewCompat.setTextAppearance(textView, android.R.style.TextAppearance_Medium);
    

    【讨论】:

    • 我不从 XML 调用构造函数。自定义视图是从 java 层动态创建的。此外,我假设 setTextAppearance 为视图设置了整个样式。谢谢分配。您的解释解释了为什么这些方法对我不起作用。但是,我不知道如何将按钮绘制为微调器。
    猜你喜欢
    • 1970-01-01
    • 2017-12-06
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多