为什么我的Button文本强制在Lollipop上的所有大写?

use*_*002 418 android android-button android-styles android-5.0-lollipop

在我的应用程序"Tide Now WA"中,我最近使用新的Nexus 9平板电脑(Lollipop - API 21)测试了兼容性.

它会写一些按钮文字.此应用程序使用Android 2.3和Android 4.0正确编写文本.即混合资本和小写字母.

当我的Nexus 9上运行相同的应用程序时,文本中的所有字母都大写.

FWIW我的清单包含以下声明:

uses-sdk android:minSdkVersion="10" android:targetSdkVersion="14"

我可以在我的代码中修复此问题,还是操作系统中的错误感谢

Nik*_*ski 609

我不知道它为什么会发生,但有三个微不足道的尝试:

  1. android:textAllCaps="false"在你的layout-v21

  2. 以编程方式更改按钮的转换方法. mButton.setTransformationMethod(null);

  3. 检查你的风格Allcaps

注意:public void setAllCaps(boolean allCaps)android:textAllCaps可从API版本14获得.

  • 我在样式定义中使用了 `<item name="android:textAllCaps">false</item>` (3认同)
  • 是的,添加:btn [i] .setTransformationMethod(null); 让它工作谢谢 (2认同)
  • 我接受Nikola的回答作为解决方案,但是想指出问题的另一部分是由alanv提供的,他在上述评论中解释了原因. (2认同)

mig*_*uel 162

这是我在values/themes.xml中所做的

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="buttonStyle">@style/MyButton</item>
    </style>

    <style name="MyButton" parent="Widget.AppCompat.Button">
        <item name="android:textAllCaps">false</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

  • 对于API级别14之前的支持,您可以使用`<item name ="textAllCaps"> false </ item>`. (7认同)
  • 在XML`android:textAllCaps =“ false”`(我正在使用android studio 3.0) (2认同)

use*_*002 103

通过设置按钮的TransformationMethod,可以在应用程序代码中修复此问题

mButton.setTransformationMethod(null);
Run Code Online (Sandbox Code Playgroud)


Bob*_*ton 63

设置android:textAllCaps ="false".如果您使用的是appcompat样式,请确保textAllCaps位于样式之前.否则样式将覆盖它.例如:

android:textAllCaps="false"
style="@style/Base.TextAppearance.AppCompat"
Run Code Online (Sandbox Code Playgroud)


Ash*_*ule 55

在样式中添加此行

    <item name="android:textAllCaps">false</item>
Run Code Online (Sandbox Code Playgroud)

  • 我不知道他们为什么要这么做 (49认同)
  • 这是材料主题的默认值,因为它适合材料设计的本质 (5认同)

小智 35

这一个正在工作....只需在底部代码的代码中添加以下代码:

android:textAllCaps="false"
Run Code Online (Sandbox Code Playgroud)

它应该取消U试图输入小的大写字母.


tha*_*uNA 31

Lollipop默认带有"textAllCaps true",因此您必须手动将其设置为false

  • 很高兴知道.如果有一个网站列出了每个Android版本的所有这些默认值? (5认同)

Abd*_*shi 29

在您的 xml 中使用这一行android:textAllCaps="false"

<Button
            android:id="@+id/btn_login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/login_str"
            android:background="@color/colorBlue"
            android:textColor="@color/colorWhite"
            android:textAllCaps="false"
           />
Run Code Online (Sandbox Code Playgroud)


小智 23

<Button>标签中添加android:textAllCaps ="false" .


ped*_*oca 19

有一种更简单的方法适用于所有按钮,只需更改主题中按钮的外观,试试这个:

values-21/styles.xml中

<resources>
    <style name="myBaseTheme"
        parent="@android:style/Theme.Material.Light">
        <item name="android:colorPrimary">@color/bg</item>
        <item name="android:colorPrimaryDark">@color/bg_p</item>
        <item name="android:textAppearanceButton">@style/textAppearanceButton</item>
    </style>

    <style name="textAppearanceButton" parent="@android:style/TextAppearance.Material.Widget.Button">
        <item name="android:textAllCaps">false</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

PS:建议遵循材料设计的原则,你应该在按钮中显示大写文本,http://www.google.com/design/spec/components/buttons.html

  • 我同意,遵循设计指南是很棒的......直到按钮文本不再适合按钮 (2认同)

Ami*_*emi 18

爪哇:

yourButton.setAllCaps(false);
Run Code Online (Sandbox Code Playgroud)

科特林:

yourButton.isAllCaps = false
Run Code Online (Sandbox Code Playgroud)

XML:

android:textAllCaps="false"
Run Code Online (Sandbox Code Playgroud)

款式:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="buttonStyle">@style/yourButtonStyle</item>
    </style>

    <style name="yourButtonStyle" parent="Widget.AppCompat.Button">
        <item name="android:textAllCaps">false</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

在布局中:

   <Button
      .
      .
      style="@style/yourButtonStyle"
      .
      .
   />
Run Code Online (Sandbox Code Playgroud)


小智 11

在XML布局中使用android.support.v7.widget.AppCompatButton可以避免必须使用layout-21或以编程方式更改任何内容.当然,这也适用于AppCompat v7库.

<android.support.v7.widget.AppCompatButton
    android:id="@+id/btnOpenMainDemo"
    android:textAllCaps="false"
    style="@style/HGButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/btn_main_demo"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"/>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


cha*_*ddy 9

您可以添加android:textAllCaps="false"到按钮.

按钮文本可能会被适用于所有按钮的应用主题转换为大写.检查主题/样式文件以设置属性android:textAllCaps.


wis*_*cky 8

在Android Studio IDE中,您必须单击"过滤器"图标以显示专家属性.然后你会看到该textAllCaps物业.检查一下,然后取消选中它.


war*_*ero 6

如果您到达这里是因为您的 facebook 按钮文本全部大写,那么只需将其添加android:textAllCaps="false"到您的 xml 文件中即可。这对我有用。