Android按钮,圆角,波纹效果,无阴影
我正在尝试构建带有圆角的Android按钮。但是沿着圆角(左下角和右下角),周围有不需要的灰色阴影 这是我的密码:Android按钮,圆角,波纹效果,无阴影,android,button,rounded-corners,ripple,Android,Button,Rounded Corners,Ripple,我正在尝试构建带有圆角的Android按钮。但是沿着圆角(左下角和右下角),周围有不需要的灰色阴影 这是我的密码: drawable/my_button.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shap
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 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>
<?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>
<?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>
<?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>
然后在布局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>
在代码中尝试此操作
Button buyButton = (Button) findViewById(R.id.buy_button);
Button sellButton = (Button) findViewById(R.id.sell_button);
hideShadow(buyButton);
hideShadow(sellButton);
public void hideShadow(Button button) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
button.setElevation(0);
}
}
尝试在xml中设置此选项。这对我有用
style="?android:attr/borderlessButtonStyle"
此外,如果您的目标是API级别21及以上,则可以使用
android:stateListAnimator="@null"
此链接在您的可绘制文件中有更多答案,请创建如下文件:
button_background.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:bottomRightRadius="15dp"
android:topRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"/>
<solid android:color="@color/blue_500" />
</shape>
增加半径使其更弯曲
在XML for button中,为按钮和背景提供无边框样式,使其与顶部类似:
<Button
android:id="@+id/task_action_btn"
style="@style/Base.Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:background="@drawable/button_background"
android:textAppearance="@style/Base.TextAppearance.AppCompat.Body1"
android:textColor="@android:color/white" />
我终于用下面的代码解决了这个问题。这可以实现按钮的圆角。另外,对于Android版本>=V21,它使用涟漪效应。对于早期的Android版本,按钮的颜色在点击时会发生变化,这取决于按下的Android:state、聚焦的Android:state等等
在布局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版本,只需在onclick期间更改背景颜色:
drawable/green\u trading\u button\u effect.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 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>
<?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>
<?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>
<?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>
drawable/green\u trading\u button\u selected.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 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>
<?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>
<?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>
<?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>
可绘制/ripple_circle.xml
drawablev21/ripple_circle.xml
可绘制/按钮\u圆圈\u background.xml
drawable/circle.xml
将样式和涟漪设置为按钮
灵感来自
这将添加完美的圆角涟漪效果按钮与圆角形状,也没有阴影
只需将android:clipToPadding=“false”
添加到您的
视图中可绘制的文件,用于按钮的设计形状,即使用目的。
drawable/ripper_button_effect.xml
在XML中使用
<com.google.android.material.button.MaterialButton
android:id="@+id/btnName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ripper_button_effect"/>
按钮具有默认阴影。您可以更改为TextView,它是按钮的基类,具有较少的默认值。对于冗余边框问题,我使用style=“?android:attr/borderlessButtonStyle”
解决。有人知道如何恢复默认涟漪效果吗?@shwn Yuan Tee您需要使用自定义涟漪可绘制。style=“@style/Base.Widget.AppCompat.Button.Borderless”
有效,谢谢style=“?android:attr/borderlessButtonStyle”
也可以,谢谢!为我工作:)如果您还希望ripple中有一个“禁用”,请在ripple
的根目录中添加一个项,并在该项中添加一个选择器。然后,正常使用:一个项目
,用于此答案中的涟漪内容,另一个是项目状态_enabled=false,具有所需的设计。类似于:android:color=“@color/ripple\u material\u dark”
是一个私有资源,因此没有显示涟漪效应。我在我的@color
文件夹中添加了另一种颜色,并将android:color=“@color/ripple\u material\u dark”
替换为android:color=“@color/my\u gray\u color”
并平滑显示涟漪效果。