从查看EditText源代码看,似乎没有这样的API,并且按下/选择的颜色只是硬编码:
public EditText(/*Context context,AttributeSet attrs,int defStyle*/) {super(/*context,attrs,defStyle*/); StateListDrawable mStateContainer = new StateListDrawable(); ShapeDrawable pressedDrawable = new ShapeDrawable(new RoundRectShape(10,10)); pressedDrawable.getPaint().setStyle(Paint.FILL); pressedDrawable.getPaint().setcolor(0xEDEFF1); ShapeDrawable focusedDrawable = new ShapeDrawable(new RoundRectShape(10,10)); focusedDrawable.getPaint().setStyle(Paint.FILL); focusedDrawable.getPaint().setcolor(0x5A8AC1); ShapeDrawable defaultDrawable = new ShapeDrawable(new RoundRectShape(10,10)); defaultDrawable.getPaint().setStyle(Paint.FILL); defaultDrawable.getPaint().setcolor(color.GRAY); mStateContainer.addState(VIEw.pressed_STATE_SET,pressedDrawable); mStateContainer.addState(VIEw.FOCUSED_STATE_SET,focusedDrawable); mStateContainer.addState(StateSet.WILD_CARD,defaultDrawable); this.setBackgroundDrawable(mStateContainer);}
任何人都可以验证应用程序无法知道当前设备上按下/选择的颜色是什么吗?
如果应用无法确定按下/选择的颜色是什么,则无法为不同设备上的UI匹配的按钮创建选择器.
似乎AndroID必须提供一种方法来找出这些颜色是什么,以便应用程序可以使用与它们碰巧运行的设备的UI一致的颜色.
谢谢!
-Tom B.
跟进,针对CaseyB的评论,我尝试了以下方法:
StateListDrawable d = new StateListDrawable();d.addState(androID.R.attr.state_enabled,getResources().getDrawable(R.drawable.my_custom_background));mybutton.setBackgroundDrawable(d);
但它会使按钮为所有状态使用自定义背景.似乎没有办法告诉StateListDrawable使用默认的drawables来处理按下/选择的状态.
@H_403_34@解决方法 最简单的方法是为你的按钮创建一个自定义样式,继承自androID:style / Widget.button并将androID:background添加到你的自定义样式中. 总结以上是内存溢出为你收集整理的是否有Android API来获取默认按钮按下/选择的颜色?全部内容,希望文章能够帮你解决是否有Android API来获取默认按钮按下/选择的颜色?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)