作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
尝试在这里做一些非常简单的事情,并查找了一堆 SO 资源,但无济于事。我试图在使用 shape drawable
类型的 drawable
背景的按钮上获得波纹效果。相关文件:
背景按钮:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1px"
android:color="#80ffffff" />
<solid android:color="@android:color/transparent" />
</shape>
drawable-v21
文件夹中的
ripple.xml:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:drawable="@drawable/background_button"/>
</ripple>
按钮.xml:
<Button
android:id="@+id/login_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_weight="1"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:background="@drawable/ripple"
/>
这里有什么问题。谢谢!
最佳答案
我的建议是不要使用 <ripple
标签。我有两个原因:做你想做的事并不容易,你必须有两个不同的 .xml
每个背景的文件。我不喜欢 drawable-v21
文件夹。
我的解决方案是包装你的 Button
与 FrameLayout
并使用 android:foreground
属性。这样你就可以拥有任何你想要的背景,并且可以保持涟漪效应。
<FrameLayout
android:id="@+id/login_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_weight="1"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:foreground="?attr/selectableItemBackground">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_button"/>
</FrameLayout>
请注意,我将所有属性和 ID 移到了 FrameLayout
.你应该设置 onClickListener
至 FrameLayout
而不是 Button
.
顺便说一句,?attr/selectableItemBackground
是很棒的。尽可能多地使用它。对于 Android 4.0 到 4.3 的旧设备,它将蓝色 Holo 颜色替换为灰色。
关于android - 形状可绘制的涟漪效应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34458482/
我有一些简单的 CSS Material 设计波纹效果代码,只需在其上应用 .ripple 类(但它必须具有宽度和高度)即可用于每个需要的元素。代码如下: (function(window, $) {
我是一名优秀的程序员,十分优秀!