- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我尝试用自定义颜色创建波纹效果,并且有点成功,只是波纹效果移除了原始背景,从而创建了一个半透明的波纹效果,这不是我想要的。
布局:
<Button
android:layout_width="80dp"
android:layout_height="80dp"
android:text="Clicky"
android:colorControlHighlight="@android:color/holo_blue_light"
android:background="@drawable/selector">
</Button>
drawable/selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/ripple"/>
<item android:drawable="@color/normal"/>
</selector>
drawable/ripple.xml:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="#7f7">
</ripple>
颜色.xml
<resources>
<color name="normal">#070</color>
</resources>
在叠加波纹效果时,我必须怎么做才能保持绿色 (#070) 背景?我相信这就是 Intent ,对吧?
编辑
我现在按照 AcademicDuck 的建议引入了一个形状
:
drawable/red_shape.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@color/normal" />
</shape>
此形状由现在修改的波纹引用:
drawable/ripple.xml:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:drawaleb="@drawable/red_shape">
</ripple>
现在发生的变化是,当我按下时,背景是纯红色而不是透明的。仍然没有涟漪。
最佳答案
为了使用您的自定义可绘制对象,您需要像这样在波纹可绘制对象中指定它 (RippleDrawable):
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/yourRippleColor">
<item android:drawable="@drawable/yourDrawable" />
</ripple>
此外,还值得检查以下问题:Android L's Ripple Effect - Touch Feedback for Buttons - Using XML和 android ripple button with background
关于android - 为什么涟漪效应会移除我原来的背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26908470/
如何使用 Blazor 在 Linux 平台下运行 Desktop 程序 本文将讲解如何使用 Blazor 运行跨平台应用,应用到的技术有以下几点 Blazor
低并发的友友们好,我是闪客。 Lambda 表达式非常方便,在项目中一般在 stream 编程中用的比较多。 List<Student> studen
我是一名优秀的程序员,十分优秀!