Как я могу запретить пользователям вставлять внутренние кнопки при применении пользовательского стиля?

Недавно я применил стиль ко всем своим кнопкам в моем style.xml, используя: <item name = "buttonStyle">@style/buttonStyle</item>. Когда я это делаю, он внезапно позволяет пользователю вставлять текст внутри самой кнопки, полностью заменяя текст внутри кнопки. Конечно, это не идеально, и я хотел бы, чтобы этого не произошло.

Когда применяется стиль нет, кнопки работают правильно.

Любое нажатие длинная с любой стороны текста внутри кнопки приводит к предоставлению опции, как показано ниже:

Как я могу запретить пользователям вставлять внутренние кнопки при применении пользовательского стиля?

Кнопка после вставки текста:

Как я могу запретить пользователям вставлять внутренние кнопки при применении пользовательского стиля?

Это код @style/buttonStyle:

<style name = "buttonStyle" parent = "Widget.AppCompat.Button">
    <item name = "android:fontFamily">@font/cabin_condensed_semibold</item>
    <item name = "android:textColor">@color/white</item>
    <item name = "android:capitalize">characters</item>
    <item name = "android:background">@drawable/button_primary</item>
</style>

Это код фона @drawable/button_primary:

<?xml version = "1.0" encoding = "utf-8"?>
<selector xmlns:android = "http://schemas.android.com/apk/res/android">
<item android:state_enabled = "true" android:drawable = "@drawable/medium_button_no_border"/>
<item android:state_enabled = "false">
    <shape android:shape = "rectangle">
        <solid android:color = "@color/grey"/>
    </shape>
</item>

И, наконец, @drawable/medium_button_no_border:

<?xml version = "1.0" encoding = "utf-8"?>
<ripple xmlns:android = "http://schemas.android.com/apk/res/android" android:color = "@color/white">
<item android:id = "@android:id/mask">
    <shape android:shape = "rectangle">
        <solid android:color = "@color/lightGrey" />
    </shape>
</item>

<item android:id = "@android:id/background">
    <shape android:shape = "rectangle">
        <solid android:color = "@color/colorPrimary"/>
    </shape>
</item>
</ripple>

Я пытался добавить такие атрибуты, как <item name = "android:editable">false</item>, но это, похоже, не имеет значения. Проблема также сохраняется, если я удаляю родителя Widget.AppCompat.Button из моего buttonStyle.

@Зои хорошо, мой плохой.

Kes Walker 30.04.2019 16:08

@ Зои, почему ты продолжаешь удалять меня, говоря: «Я ценю любую помощь, спасибо». что в этом плохого?

Kes Walker 30.04.2019 16:09
meta.stackoverflow.com/a/288179/6296561
Zoe stands with Ukraine 30.04.2019 16:10

Вы можете попытаться удалить item из стиля один за другим, чтобы проверить, какой из них вызывает проблему, или достаточно просто применить пустой стиль.

lelloman 30.04.2019 16:18

@lelloman да, удаление items по одному помогло решить эту проблему, спасибо.

Kes Walker 30.04.2019 16:54
2
5
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Внутри @style/buttonStyle атрибут: <item name = "android:capitalize">characters</item> делал текст кнопки редактируемым. Этот атрибут якобы «каждый символ пишется с заглавной буквы», но на самом деле ничего не пишется с заглавной буквы.

Я просто заменил это на: <item name = "android:textAllCaps">true</item>. Теперь текст в кнопке не редактируется и пишется с большой буквы.

Другие вопросы по теме