背景
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.AppCompatButton xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/medium_margin" android:layout_marginRight="@dimen/medium_margin" android:textStyle="bold" tools:text="I am a Button" style="@style/PrimaryColoredButton" />
适用于它的风格如下
<style name="PrimaryColoredButton" parent="Widget.AppCompat.Button.Colored"> <item name="android:textColor">@color/white</item> <item name="android:capitalize">sentences</item> <item name="android:background">@drawable/primary_button_background</item> </style>
问题
长按按钮时,系统粘贴按钮出现,允许用户将内容粘贴到按钮的标签中.
粘贴后:
我无法从XML的角度看待这种方法,但感觉这根本不可能.
有趣的是,它只发生在长按不在文本上而是在背景本身上.
解决方法
看起来,这种行为并不仅限于AppCompatButtons.它源于Button是TextView的子类这一事实,实际上触发该行为的是您自定义样式中的capitalize属性.如果将其设置为none以外的任何值,则会导致TextView的内部编辑器变为活动状态并响应长按.
实际上,似乎任何导致Button具有非默认输入类型的属性设置都会导致此问题.这些属性包括 – 但不限于 – 大写,数字,自动文本,显然,除了none之外的任何inputType. textIsSelectable属性也会造成一点破坏,因为Button会像一个不可编辑的EditText.将显示光标和选择句柄,以及适当时编辑CAB,但没有输入方法,并且Button变为不可单击.
这些显然不是你通常在Button上设置的属性,但这对我来说肯定是个错误,因为Button可能不会以任何方式让自己变得可编辑.实际上,在某些州,粘贴文本,然后转移焦点或点击会导致编辑器崩溃.如果这是非预期的行为(粘贴,而不是崩溃),据我所知,它已被错误地实施了一段时间.
要解决此问题,您应该从样式中删除capitalize属性,并在Button上设置文本时自己处理.或者,如果您不需要响应按钮上的长按,则可以将样式中的longClickable属性设置为false.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。