使用AppCompat的设计效果以编程方式为Android按钮设置buttonColorNormal

使用AppCompat的设计效果以编程方式为Android按钮设置buttonColorNormal,第1张

概述我一直在使用 Android的Google设计支持库.为了设置与app主题不同的按钮的颜色,我在布局XML文件中声明了Button,如下所示: <Button style="@style/Widget.AppCompat.Button.Colored" android:layout_width="wrap_content" a 我一直在使用 Android的Google设计支持库.为了设置与app主题不同的按钮的颜色,我在布局XML文件中声明了button,如下所示:

<button                        androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:theme="@style/Mybutton" />

然后将styles.xml中的Mybutton定义为

<style name="Mybutton" parent="themeOverlay.AppCompat">    <item name="colorbuttonnormal">@color/my_color</item></style>

这给了我一个按照设计支持库的按钮,背景颜色是我在colors.xml文件中用@ color / my_color定义的背景颜色.

因此,基本上它是使用androID:theme来改变colorbuttonnormal属性以获得所需的颜色.

我怎么能以编程方式获得相同的结果?基本上如果我可以做类似的事情

mybutton.settheme(R.style.Mybutton)

…然后我可以设置colorbuttonnormal来获取视图.

我无法设置它

mybutton.setBackgroundcolor(ContextCompat.getcolor(getContext(),R.color.my_color));

或者甚至不喜欢

colorStateList colorStateList = ContextCompat.getcolorStateList(getActivity(),R.color.my_color);VIEwCompat.setBackgroundTintList(mybutton,colorStateList);

这将删除触摸的设计支持库效果.

解决方法 对于button我写了这个帮助方法:

public static colorStateList getbuttoncolorStateList(Context context,int accentcolor) {    // get darker variant of accentcolor for button pressed state    float[] colorHSV = new float[3];    color.colorToHSV(accentcolor,colorHSV);    colorHSV[2] *= 0.9f;    int darkerAccent = color.HSVTocolor(colorHSV);    return new colorStateList(            new int[][] {{androID.R.attr.state_pressed},{androID.R.attr.state_enabled},{-androID.R.attr.state_enabled}},new int[] { darkerAccent,accentcolor,getcolor(context,R.color.buttoncolorDisabled) });}

accentcolor是正常启用状态的颜色值.对于按下状态,使用较暗的accentcolor变体,对于禁用状态,我在值中定义了颜色:

<color name="buttoncolorDisabled">#dddddd</color>

使用此方法:

mbutton.setSupportBackgroundTintList(Utils.getbuttoncolorStateList(this,accentcolor));

其中mbutton是AppCompatbutton,accentcolor是颜色的值.

这适用于Lollipop及以上版本,具有触感和前棒棒糖作为标准颜色变化.

总结

以上是内存溢出为你收集整理的使用AppCompat的设计效果以编程方式为Android按钮设置buttonColorNormal全部内容,希望文章能够帮你解决使用AppCompat的设计效果以编程方式为Android按钮设置buttonColorNormal所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1125814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存