Недавно я применил стиль ко всем своим кнопкам в моем 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.
@ Зои, почему ты продолжаешь удалять меня, говоря: «Я ценю любую помощь, спасибо». что в этом плохого?
Вы можете попытаться удалить item из стиля один за другим, чтобы проверить, какой из них вызывает проблему, или достаточно просто применить пустой стиль.
@lelloman да, удаление items по одному помогло решить эту проблему, спасибо.
Внутри @style/buttonStyle атрибут: <item name = "android:capitalize">characters</item> делал текст кнопки редактируемым. Этот атрибут якобы «каждый символ пишется с заглавной буквы», но на самом деле ничего не пишется с заглавной буквы.
Я просто заменил это на: <item name = "android:textAllCaps">true</item>. Теперь текст в кнопке не редактируется и пишется с большой буквы.
@Зои хорошо, мой плохой.