如何在应用自定义样式时阻止用户粘贴按钮? [重复]

问题描述 投票:2回答:1

这个问题在这里已有答案:

我最近使用style.xml在我的<item name="buttonStyle">@style/buttonStyle</item>中为我的所有按钮应用了一种风格。当我这样做时,它突然允许用户在按钮本身内粘贴文本,完全替换按钮内的文本。当然这并不理想,我想防止这种情况发生。

如果未应用样式,则按钮可正常运行。

任何长按按钮内文本的任何一侧都会导致提供选项,如下所示:

Shows where the user is allowed to paste

粘贴文本后的按钮:

Shows the pasted text in the button

这是@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,问题仍然存在。

android android-layout android-styles
1个回答
2
投票

@style/buttonStyle中,属性:<item name="android:capitalize">characters</item>使按钮文本可编辑。据称这个属性“将每个角色都资本化”,但实际上没有任何资本。

我刚刚将其替换为:<item name="android:textAllCaps">true</item>。现在按钮中的文本不可编辑并且大写。

© www.soinside.com 2019 - 2024. All rights reserved.