自定义按钮样式出现在预览中但不出现在设备上

问题描述 投票:0回答:3

我为我的按钮制作了一个自定义样式。它完全出现在布局预览中(通过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>

编辑:添加一些渲染器的图片

XML预览版面设计显示的内容:enter image description here

该应用程序显示:enter image description here

android android-layout android-xml
3个回答
2
投票

尝试更改此行

<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" />

0
投票

也许你只是忘了删除android:visibility =“gone”? :)))

另外你为什么使用android:backgroundTintandroid:foreground?也许你可以做一些更简单的事情,比如这样

<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">
    <solid android:color="@android:color/"
    <corners android:radius="65dp" />
</shape>

并且还为其他状态创建形状,而不是创建一个选择器


-1
投票

使用下面的代码我希望它能帮到你

按键

 <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>
© www.soinside.com 2019 - 2024. All rights reserved.