【问题标题】:Adding ripple effect to already custom button为已经自定义的按钮添加波纹效果
【发布时间】:2017-03-15 20:24:28
【问题描述】:

我正在尝试为自定义按钮添加波纹效果。但我找到的唯一解决方案是添加一个背景,我已经为该按钮实现了圆角。现在我想添加涟漪效果。这是我的按钮标签到目前为止的样子:

<Button
    android:text="PLAY"
    android:id="@+id/button"
    android:textSize="20dp"
    android:layout_width="75dp"
    android:layout_height="75dp"
    android:background="@drawable/roundedbutton"
    android:onClick="gotomainpage"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="200dp" />

【问题讨论】:

    标签: android android-studio ripple


    【解决方案1】:

    在您的按钮中使用此代码

    android:foreground="?attr/selectableItemBackground"
    

    【讨论】:

    • 我收到了这个错误。在包'android'中找不到属性'forground'的资源标识符
    【解决方案2】:

    简单

    1.创建包含背景形状的 Ripple Drawable

    <ripple
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="?colorControlHighlight">         //defaul ripple color
    
        <item>
            <shape                                //the background shape when it's not being click
                android:shape="rectangle">
    
                <solid
                    android:color="@color/colorPrimary" />
    
                <corners
                    android:radius="32dp" />
    
            </shape>
    
        </item>
    
    </ripple>
    

    2。将 Drawable 应用到按钮并移除阴影

    <Button
        style="?borderlessButtonStyle"              //remove the default shadow
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:layout_weight="1"
        android:background="@drawable/background_button"        //here
        android:text="Sign up"
        android:textAllCaps="false"
        android:textColor="@android:color/white" />
    

    【讨论】:

      【解决方案3】:

      尝试添加android:foreground="@drawable/ripple"

      drawable/ripple.xml

      <?xml version="1.0" encoding="utf-8"?>
      <ripple xmlns:android="http://schemas.android.com/apk/res/android"
          android:color="@color/ripple_white">
          <item android:id="@android:id/mask">
              <shape android:shape="rectangle">
                  <solid android:color="?android:colorAccent" />
              </shape>
          </item>
      </ripple>
      

      如果View 的拐角处有半径,则将此 XML 应用到形状内(否则波纹会一直延伸到拐角处);

      <corners android:radius="10dp"/>
      

      如果您想要以圆圈结尾的涟漪,请使用此

      drawable/ripple_circle.xml

      <?xml version="1.0" encoding="utf-8"?>
      <ripple xmlns:android="http://schemas.android.com/apk/res/android"
          android:color="@color/ripple_white">
          <item android:id="@android:id/mask">
              <shape android:shape="oval">
                  <solid android:color="?android:colorAccent" />
              </shape>
          </item>
      </ripple>
      

      此方法要求最低 API 级别为 21 或更高,android:foreground 对低于 23 的 API 级别无效

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-17
        • 1970-01-01
        • 1970-01-01
        • 2015-10-16
        • 2017-02-21
        相关资源
        最近更新 更多