我为我的按钮制作了一个自定义样式。它完全出现在布局预览中(通过Android Studio XML预览版),但是当我运行应用程序时,按钮没有想要的边框。
知道可能导致这种情况的原因吗?
activity_main.xml中
<style name="Button.Pink" parent="Button">
<item name="android:background">@drawable/rounded_corners_button</item>
<item name="android:backgroundTint">@color/pink</item>
<item name="android:textColor">@color/white</item>
</style>
styles.xml
<Button
style="@style/Button.Pink"
android:id="@+id/btn_sale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|start"
android:enabled="false"
android:foreground="?attr/selectableItemBackground"
android:text="@string/sale"
android:layout_marginTop="4dp"
android:layout_marginStart="4dp"
android:visibility="gone"
tools:visibility="visible" />
rounded_corners_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="65dp" />
</shape>
</item>
</selector>
编辑:添加一些渲染器的图片
尝试更改此行
<style name="Button.Pink" parent="Button">
至
<style name="Button.Pink" parent="Widget.AppCompat.Button"> //AppCompat style to support backports.
更新
如果您的目标是min api 21,那么请尝试在支持库28中引入的最新材料按钮。
<android.support.design.button.MaterialButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sale"
app:backgroundTint="@color/colorAccent"
app:cornerRadius="50dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp" />
也许你只是忘了删除android:visibility =“gone”? :)))
另外你为什么使用android:backgroundTint
和android:foreground
?也许你可以做一些更简单的事情,比如这样
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/"
<corners android:radius="65dp" />
</shape>
并且还为其他状态创建形状,而不是创建一个选择器
使用下面的代码我希望它能帮到你
按键
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:textColor="#ffffff"
android:background="@drawable/rounded_corners_button"
android:text="Buttons" />
可绘制的圆角按钮
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item >
<shape android:shape="rectangle" >
<corners android:radius="5dip" />
<stroke android:width="1dip" android:color="#00FFFF" />
<gradient android:angle="-90" android:startColor="#8dbab3" android:endColor="#58857e" />
</shape>
</item>
</selector>