我需要知道使用最新的AppCompat(暂时为23.2.1)对材质按钮(AppCompatButton)进行着色的最佳(和推荐)方法是什么.我原本无法想象它会如此令人沮丧!我尝试了here的大部分答案,但要么它们不起作用,要么与意外结果一起工作.
我需要保持向后兼容api> = 9并且只需要将涟漪效应应用于> = 21没什么特别的.那么到目前为止最好的方法是什么?
如果你能同时提供xml和java代码,我将不胜感激.
解决方法:
有很多方法可以做到这一点.
我最喜欢的是以下内容:
<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<的压缩状态.棒棒糖和波纹> =棒棒糖.
如果没有其他工作,你可以自己给按钮着色:
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" />
将其设置为您的按钮.