Android:以编程方式将样式设置为自定义按钮

Android:以编程方式将样式设置为自定义按钮,android,textview,android-spinner,android-button,Android,Textview,Android Spinner,Android Button,我有一个扩展按钮的自定义视图。我只想设置这个视图的贝洛夫风格 <style name="MultipleButtonStyle" parent="android:Widget.Material.Light.Spinner.Underlined"> <item name="android:textColor">@android:color/black</item> <item name="android:textAp

我有一个扩展按钮的自定义视图。我只想设置这个视图的贝洛夫风格

    <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>
第二种方法是使用
setTextAppearance
方法。这对我也不起作用

if (Build.VERSION.SDK_INT < 23) {
        super.setTextAppearance(getContext(), R.style.MultipleButtonStyle );
    } else {
        super.setTextAppearance(R.style.MultipleButtonStyle);
    }
if(Build.VERSION.SDK\u INT<23){
super.setTextAppearance(getContext(),R.style.MultipleButtonStyle);
}否则{
super.settext外观(R.style.MultipleButtonStyle);
}

您的构造函数看起来不错,您是否也覆盖了其他构造函数(例如,当从XML膨胀时调用的
属性集)?检查有关
View
s构造函数和一些样式的问题

第二种方法是不合适的,因为您的样式的父级是整个
微调器的样式。带下划线的
,而不仅仅是
文本外观的
。在这种情况下,您应该扩展
@android:style/TextAppearance.Medium
(或其他)。如果选择这种方式,请记住API23中已弃用的方法,您可以使用一些帮助程序,而无需检查操作系统版本:

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

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

第二种方法是不合适的,因为您的样式的父级是整个
微调器的样式。带下划线的
,而不仅仅是
文本外观的
。在这种情况下,您应该扩展
@android:style/TextAppearance.Medium
(或其他)。如果选择这种方式,请记住API23中已弃用的方法,您可以使用一些帮助程序,而无需检查操作系统版本:

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

我不从XML调用构造函数。自定义视图是从java层动态创建的。除此之外,我假设setTextAppearance为视图设置了整个样式。谢谢你。你的解释解释了为什么这些方法不适合我。但是,我不知道如何绘制一个按钮作为微调器,我不从XML调用构造函数。自定义视图是从java层动态创建的。除此之外,我假设setTextAppearance为视图设置了整个样式。谢谢你。你的解释解释了为什么这些方法不适合我。但是,我不知道如何绘制一个按钮作为微调器。