【问题标题】:How to put ripple effect on relative layout in android?如何在android中的相对布局上产生涟漪效应?
【发布时间】:2021-04-30 23:22:51
【问题描述】:

我已经使用相对布局在 android 中为我的卡片视图创建了自定义按钮,并通过

这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:layout_width="125dp"
        android:layout_height="30dp"
        android:background="@color/colorPrimary"
        android:layout_gravity="center_horizontal"
        android:focusableInTouchMode="true">


        <TextView
            android:layout_width="125dp"
            android:layout_height="30dp"
            android:fontFamily="@font/questa"
            android:text="Know More"
            android:gravity="center"
            android:textAllCaps="false"
            android:textColor="#ffffff">
        </TextView>

    </FrameLayout>

</RelativeLayout>

包括布局代码:

<include
                android:id="@+id/btnViewDetails"
                style="@style/CardView.Button"
                layout="@layout/button"
                android:layout_width="125dp"
                android:layout_height="30dp"
                android:layout_below="@+id/viewDivider"
                />

【问题讨论】:

标签: java android xml android-layout


【解决方案1】:

你只需在RelativeLayout中添加3行代码

android:clickable="true"
android:focusable="true"
android:foreground="?selectableItemBackground"

【讨论】:

    【解决方案2】:

    您必须将ripple 添加到您的背景父级。

    假设你有一个像这样的ripple 文件,文件名为ripple in drawable

    <?xml version="1.0" encoding="utf-8"?>
    <ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="#9D9D9D">
        <item>
            <shape android:shape="rectangle">
                <solid android:color="#9D9D9D" />
                <corners android:radius="20dp" />
            </shape>
        </item>
    
        <item android:drawable="@drawable/drawable_all_rows" />
    </ripple>
    

    *** 第一个 item 为您的componentbutton 添加效果,而第二个 item 是您没有的状态 点击button

    drawable_all_rows

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
    
        <solid android:color="#ffffff" />
        <corners android:radius="20dp" />
    
    </shape>
    

    然后您将其添加到您的relative layout 背景,如下所示:

    【讨论】:

      【解决方案3】:
      <?xml version="1.0" encoding="utf-8"?>
      <ripple xmlns:android="http://schemas.android.com/apk/res/android"
          android:color="@color/colorPrimaryDark">
          <item android:id="@android:id/mask">
              <shape android:shape="rectangle">
                  <solid android:color="@color/colorPrimaryDark" />
                  <corners android:radius="@dimen/_4sdp" />
              </shape>
          </item>
      
      <item android:id="@android:id/background">
          <shape android:shape="rectangle">
              <gradient
                  android:angle="90"
                  android:endColor="@color/blue"
                  android:startColor="@color/colorPrimary"
                  android:type="linear" />
              <corners android:radius="@dimen/_4sdp" />
          </shape>
      </item>
      

      【讨论】:

        【解决方案4】:

        我只用了 1 行

        android:background="?selectableItemBackground"
        

        【讨论】:

          猜你喜欢
          • 2022-11-29
          • 1970-01-01
          • 2019-12-07
          • 1970-01-01
          • 1970-01-01
          • 2015-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多