以编程方式更改按钮的主题

Change theme for button programmatically

我可以使用 xml 中的 android:theme 属性将主题设置为按钮。是否有任何等效的程序代码?

<Button
        android:id="@+id/btnPayment"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:text="Add Payment"
        android:theme="@style/ButtonPeter" // theme..
        />

style.xml

<style name="ButtonPeter" parent="Widget.AppCompat.Button">
        <item name="colorButtonNormal">@color/fbutton_color_peter_river</item>
        <item name="android:textColor">@android:color/white</item>

    </style>

我可以使用类似这样的东西动态设置主题吗btnPayment.setTheme(R.style.ButtonPeter)

我搜索了很多,但所有帖子都与设置 style 或创建动态 button 相关并对其应用样式,但我不想这样做。我想设置 themebutton

如何实现?

我认为您对 styletheme 感到困惑。从这个 document,它说: theme 用于整个 activity 而 style 用于视图。

A style is a collection of properties that specify the look and format for a View or window.

A theme is a style applied to an entire Activity or application, rather than an individual View.

对于此代码:

android:theme="@style/ButtonPeter" // theme is used but only valid style attributes for button will be applied

希望对您有所帮助。

正如我提到的 ,使用 TextViewCompat.setTextAppearance 应该有效:-)