Пользовательский стиль кнопок отображается в предварительном просмотре, но не отображается на устройстве. - PullRequest
0 голосов
/ 03 сентября 2018

Я сделал собственный стиль для своих кнопок. Он отлично отображается в режиме предварительного просмотра макета (через Android Studio XML Preview), но когда я запускаю приложение, кнопка не имеет требуемых границ.

Есть идеи о причинах, которые могут вызвать это?

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

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Может быть, вы просто забыли удалить андроид: visibility = "ушел"? :)))

Кроме того, почему вы используете 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>

А также создавать фигуры для других состояний и затем создавать один селектор

0 голосов
/ 03 сентября 2018

Используйте приведенный ниже код, надеюсь, он вам поможет

Кнопка

 <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>
0 голосов
/ 03 сентября 2018

Попробуйте изменить эту строку

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