如何使用最新的AppCompat调色按钮

时间:2016-03-19 17:50:04

标签: android android-appcompat android-button appcompat-v7-r23

我需要知道使用最新的AppCompat(暂时为23.2.1)为材质按钮(AppCompatButton)着色的最佳(和推荐)方法是什么。我原本无法想象它会如此令人沮丧!我尝试了here的大部分答案,但要么他们不会工作,要么会出现意想不到的结果。

我需要保持向后兼容api> = 9并且只需要将涟漪效果应用于> = 21没什么特别的。那么到目前为止最好的方法是什么?

如果你能同时提供xml和java代码,我将不胜感激。

1 个答案:

答案 0 :(得分:12)

有很多方法可以做到这一点。 我最喜欢的是以下内容:

<Button
 android:id="@+id/activity_main_some_button"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 style="@style/Widget.AppCompat.Button.Colored"
 android:text="This is a button" />  

这会自动为按钮添加您希望在主题中设置的强调色,同时保持API&lt;的压缩状态。 Lollipop和Ripple&gt; = Lollipop。

如果没有别的办法,你可以自己给按钮着色:

AppCompatButton myExampleButton = new AppCompatButton(getContext());

myExampleButton.setSupportBackgroundTintList(ContextCompat.getColorStateList(getContext(),
                                             R.color.some_color));

<强>更新

您可以执行以下操作以使用自定义颜色:

<style name="MyButtonTheme" parent="Widget.AppCompat.Button.Colored">
    <item name="colorButtonNormal">@color/someColor</item>
</style>

定义具有所需颜色的新样式。

<Button
 android:id="@+id/activity_main_some_button"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:theme="@style/MyButtonTheme"
 android:text="This is a button" />

将其设置为您的按钮。