gpt4 book ai didi

android - 形状可绘制的涟漪效应

转载 作者:数据小太阳 更新时间:2023-10-29 01:39:50 28 4
gpt4 key购买 nike

尝试在这里做一些非常简单的事情,并查找了一堆 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文件夹。

我的解决方案是包装你的 ButtonFrameLayout并使用 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 .你应该设置 onClickListenerFrameLayout而不是 Button .

顺便说一句,?attr/selectableItemBackground是很棒的。尽可能多地使用它。对于 Android 4.0 到 4.3 的旧设备,它将蓝色 Holo 颜色替换为灰色。

关于android - 形状可绘制的涟漪效应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34458482/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com