?ATTR / selectableItemBackground
我希望能够做任何颜色,并且纹波和触摸状态只是根据我设置的颜色工作.如果我能通过 android:theme做到这一点会很好
我需要这个才能使用API 15
我知道我可以做一个选择器和一个波纹但是我必须为每种颜色做一个选择器,因为你不能在xml pre API 21中做attr.
如果我只为背景设置一种颜色,那么纹波和触摸状态就不起作用.
我希望这样做尽可能简单和可重用.
是否有我遗漏的东西或任何相对干净的解决方案.
解决方法 您已发布的内容非常正确:>仅通过指定颜色无法创建纹波选择器
>使用API<无法在xml中使用主题属性21
我认为除了自己使用库或编码之外别无其他.从代码中,您可以生成涟漪,使用主题属性等.
我有同样的问题,我只是写了一堆类来轻松创建波纹.例如,为了获得主题颜色,我写了一个简单的colorStateList类:
public class ControlCheckedcolorStateList extends colorStateList { public ControlCheckedcolorStateList(Context context) { super(new int[][]{ new int[]{androID.R.attr.state_checked},new int[]{} },new int[]{ getthemecolor(context,R.attr.colorPrimary),getthemecolor(context,R.attr.colorControl) }); } public static int getthemecolor(Context context,int attr) { Resources.theme theme = context.gettheme(); TypedValue typedvalueattr = new TypedValue(); theme.resolveAttribute(attr,typedvalueattr,true); return typedvalueattr.resourceID != 0 ? context.getResources().getcolor(typedvalueattr.resourceID) : typedvalueattr.data; }}
然后我添加了波纹颜色和样式的属性.我还必须覆盖setBackground方法,因此为视图设置波纹不会清除其背景.现在使用自定义颜色设置波纹非常简单:
<carbon.Widget.button androID:background="#ffffffff" app:carbon_ripplecolor="#40ff0000" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" />
有很多代码行,所以我认为在这里发布所有内容并不合理.如果您愿意,可以从我的库中打开任何窗口小部件类,并检查它是否是您要查找的内容.您可以在github找到我的代码.如有任何问题,请随时提出.
总结以上是内存溢出为你收集整理的android – 更改视图的颜色,但保持波纹和触摸状态全部内容,希望文章能够帮你解决android – 更改视图的颜色,但保持波纹和触摸状态所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)