android - 如何在不覆盖其子项背景颜色的情况下对线性布局产生涟漪效应?

标签 android android-layout rippledrawable

我有一个看起来像这样的 LinearLayout。 enter image description here

我希望每一行都可以点击。一行的 LinearLayout 代码如下所示:

    <LinearLayout
        style="@style/home_menu_item_container"
        android:id="@+id/home_menu_acronyms_button"
        >
        <ImageView
            style="@style/home_menu_item_left"
            android:background="@color/greyLight"

            />
        <TextView
            style="@style/home_menu_item_right"
            android:text="@string/home_menu_option_2"
            android:background="@color/grey"
            />
    </LinearLayout>

如何添加波纹效果扩展到整行(父 View )——而不仅仅是行中的一个 subview ?这里棘手的部分是让波纹穿过两个彩色行。

最佳答案

到目前为止,我发现最简单的方法是定义一个 <ripple>在你的可绘制对象中,然后设置 LinearLayout 的背景到这个可绘制资源。

定义你的 drawable-v21/item_selector.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/your_background_color">
    <item android:id="@android:id/mask"
        <!--color here doesn't matter-->
        android:drawable="@android:color/white" /> 
</ripple>

设置你的背景LinearLayoutdrawable/item_selector .

<LinearLayout
    style="@style/home_menu_item_container"
    android:background="@drawable/item_selector"
    android:id="@+id/home_menu_acronyms_button" >
     ...
</LinearLayout>

此外,如果你没有自己的背景色,那么就没有必要定义一个item_selector了。根本。您可以简单地将背景定义为 android:background="?android:attr/selectableItemBackground"为你的 LinearLayout .

关于android - 如何在不覆盖其子项背景颜色的情况下对线性布局产生涟漪效应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28309256/

相关文章:

android - Gradle:将相同的模块作为依赖项添加到其他模块

java - 如何在 Android 中的 AsyncTask 完成后更新 fragment ?

android - 我怎样才能在选定的卡片 View 上点击时出现涟漪和其他前景?

Android 微调器在按钮本身上没有波纹,只有它的选项

Android、NDK、构建静态库

android - 数据库或文件处理

android - 如何显示和隐藏 popupWindow

java - 项目在 Android Studio 模拟器中的位置错误

java - 来自不同口味的 fragment 膨胀