具有圆角、波纹效果和无阴影的 Android Button

标签 android button rounded-corners ripple

我正在尝试构建带圆角的 Android 按钮。但是沿着圆角(左下角和右下角),周围有不需要的灰色阴影。

rounded corner button

这是我的代码:

drawable/my_button.xml

<?xml version="1.0" encoding="utf-8"?>
  <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <shape android:shape="rectangle">
        <stroke android:width="1dp" android:color="#ffa6c575" />
        <solid android:color="#ffa6c575"/>
        <corners android:radius="15dp" />
      </shape>
    </item>
  </selector>

然后在布局 xml 文件中,我有:

<LinearLayout
  <Button
    android:id="@+id/buy_button"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="35dp"
    android:layout_gravity="center"
    android:background="@drawable/my_button"
    android:textColor="@android:color/white"
    android:text="BUY" />

  <View
    android:layout_width="10dp"
    android:layout_height="match_parent"
    android:background="@android:color/transparent" >
  </View>

  <Button
    android:id="@+id/sell_button"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="35dp"
    android:layout_gravity="center"
    android:background="@drawable/my_button"
    android:textColor="@android:color/white"
    android:text="SELL" />

</LinearLayout>

1) 如何去除圆角(左下角和右下角)周围多余的灰色阴影?

2) 按钮默认有波纹效果。如何保持默认的链式 react ?

最佳答案

我终于用下面的代码解决了它。这实现了按钮的圆角。此外,对于 Android 版本 >= V21,它使用波纹效果。对于较早的 Android 版本,按钮颜色会在单击时发生变化,基于 android:state_pressed、android:state_focused

layout xml 文件中:

<Button
    style="?android:attr/borderlessButtonStyle"
    android:id="@+id/buy_button"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="match_parent"
    android:gravity="center"
    android:background="@drawable/green_trading_button_effect"
    android:textColor="@android:color/white"
    android:text="BUY" />

对于按钮点击波纹效果(Android >= v21):

drawable-v21/green_trading_button_effect.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/ripple_material_dark">

    <item android:id="@android:id/mask">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white" />
            <corners android:radius="5dp" />
        </shape>
    </item>

    <item android:drawable="@drawable/green_trading_button" />
</ripple>

对于较早的 Android 版本,只需在 onclick 期间更改背景颜色:

drawable/green_trading_button_effect.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/green_trading_button_selected" />
    <item android:state_focused="true" android:drawable="@drawable/green_trading_button_selected" />
    <item android:state_selected="true" android:drawable="@drawable/green_trading_button_selected" />
    <item android:drawable="@drawable/green_trading_button" />
</selector>

drawable/green_trading_button.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="#ffa6c575"/>
    <!-- rounded corners -->
    <corners android:radius="5dp" />
</shape>

drawable/green_trading_button_selected.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="#ffc5dca8"/>
    <!-- corners corners -->
    <corners android:radius="5dp" />
</shape>

关于具有圆角、波纹效果和无阴影的 Android Button,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44527700/

相关文章:

wordpress - WooCommerce 加号和减号按钮

ios - 按钮的圆角半径与下面的 View 对齐

dialogfragment中的Android圆角布局

java - 无法使用 PHP 将行从 Android 插入到 MySQL

android - 如何以编程方式更新我的应用程序?

css - 如何让自定义 CSS 按钮根据图像自动调整大小

angular - 单击按钮并通过 component - angular 增加数字

android - notifyappwidgetviewdatachanged 无法在我的小部件上的 ListView 上工作

android - 通过 Android 中的 Wi-Fi 和 3G 持续连接

objective-c - 带圆角的 NSTextField?