Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 长按材质设计按钮允许粘贴到按钮标签大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
背景

我有一个标准的Material Design按钮,如下所示

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.AppCompatButton
    xmlns:android="http://scheR_997_11845@as.android.com/apk/res/android"
    xmlns:tools="http://scheR_997_11845@as.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>

问题

长按按钮时,系统粘贴按钮出现,允许用户内容粘贴到按钮的标签中.

android – 长按材质设计按钮允许粘贴到按钮标签

粘贴后:

android – 长按材质设计按钮允许粘贴到按钮标签

我无法从XML的角度看待这种方法,但感觉这根本不可能.

有趣的是,它只发生在长按不在文本上而是在背景本身上.

解决方法

看起来,这种行为并不仅限于AppCompatButtons.它源于Button是TextView的子类这一事实,实际上触发该行为的是您@L_772_9@样式中的capitalize属性.如果将其设置为none以外的任何值,则会导致TextView的内部编辑器变为活动状态并响应长按.

实际上,似乎任何导致Button具有非认输入类型的属性设置都会导致此问题.这些属性包括 – 但不限于 – 大写,数字,自动文本,显然,除了none之外的任何inputType. textIsSELEctable属性也会造成一点破坏,因为Button会像一个不可编辑的EditText.将显示光标和选择句柄,以及适当时编辑CAB,但没有输入方法,并且Button变为不可单击.

这些显然不是你通常在Button上设置的属性,但这对我来说肯定是个错误,因为Button可能不会以任何方式让自己变得可编辑.实际上,在某些州,粘贴文本,然后转移焦点或点击会导致编辑器崩溃.如果这是非预期的行为(粘贴,而不是崩溃),据我所知,它已被错误地实施了一段时间.

解决此问题,您应该从样式中删除capitalize属性,并在Button上设置文本时自己处理.或者,如果您不需要响应按钮上的长按,则可以将样式中的longClickable属性设置为false.

不幸的是,简单地将(已弃用的)可编辑属性设置为false似乎不是一个修复,如果与任何其他上述有问题的属性结合使用.

大佬总结

以上是大佬教程为你收集整理的android – 长按材质设计按钮允许粘贴到按钮标签全部内容,希望文章能够帮你解决android – 长按材质设计按钮允许粘贴到按钮标签所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。