Shu*_*Tee 18 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:shape="rectangle">
<stroke android:width="1dp" android:color="#ffa6c575" />
<solid android:color="#ffa6c575"/>
<corners android:radius="15dp" />
</shape>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
然后在布局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>
Run Code Online (Sandbox Code Playgroud)
1)如何摆脱圆角(左下角和右下角)的额外灰色阴影?
2)按钮具有默认的波纹效果.如何保持默认的连锁效果?
Shu*_*Tee 29
我终于用下面的代码解决了它.这实现了按钮的圆角.此外,对于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" />
Run Code Online (Sandbox Code Playgroud)
对于按钮onclick涟漪效果(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>
Run Code Online (Sandbox Code Playgroud)
对于早期的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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
小智 12
绘制/ ripple_circle.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/circle" android:state_pressed="true">
<shape android:shape="rectangle">
<corners android:bottomLeftRadius="25dp" android:bottomRightRadius="25dp" android:topLeftRadius="25dp" android:topRightRadius="25dp" />
</shape>
</item>
<item android:drawable="@android:color/transparent" />
</selector>
Run Code Online (Sandbox Code Playgroud)
drawablev21/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="rectangle">
<corners
android:bottomLeftRadius="25dp"
android:bottomRightRadius="25dp"
android:topLeftRadius="25dp"
android:topRightRadius="25dp" />
<solid android:color="?android:colorAccent" />
</shape>
</item>
</ripple>
Run Code Online (Sandbox Code Playgroud)
绘制/ button_circle_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="25dp"
android:topRightRadius="25dp"
android:bottomLeftRadius="25dp"
android:topLeftRadius="25dp"/>
<solid android:color="@color/colorAccent" />
</shape>
Run Code Online (Sandbox Code Playgroud)
绘制/ circle.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:bottomRightRadius="25dp"
android:topRightRadius="25dp"
android:bottomLeftRadius="25dp"
android:topLeftRadius="25dp"/>
<solid android:color="@color/ripple_white" />
</shape>
Run Code Online (Sandbox Code Playgroud)
将样式和波纹设置为Button
<Button
android:id="@+id/choose_folder"
style="@style/Base.Widget.AppCompat.Button.Borderless"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:background="@drawable/button_circle_background"
android:foreground="@drawable/ripple_circle"
android:text="Chose Folder"
android:textColor="@android:color/white" />
Run Code Online (Sandbox Code Playgroud)
灵感来自链接
这将为圆形角形的按钮增添完美的圆角波纹效果,也没有阴影
尝试在您的 xml 中设置它。这对我有用。
style="?android:attr/borderlessButtonStyle"
Run Code Online (Sandbox Code Playgroud)
此外,如果您的目标是 API 级别 21 及以上,则可以使用
android:stateListAnimator="@null"
Run Code Online (Sandbox Code Playgroud)
此链接有更多答案How to remove button shadow (android)
用于设计按钮形状的可绘制文件 使用意图就是这样。
可绘制/ripper_button_effect.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#000000" />
<corners android:radius="15dp" />
</shape>
</item>
<item android:drawable="@drawable/your_button_shape"></item>
</ripple>
Run Code Online (Sandbox Code Playgroud)
在 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"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23517 次 |
| 最近记录: |