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

时间:2014-11-16 15:59:05

标签: android android-5.0-lollipop android-button android-styles

在我的应用" 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"

我可以在我的代码中修复此问题,还是O.S.中的错误。 感谢

20 个答案:

答案 0 :(得分:572)

我不知道为什么会这样,但有三个微不足道的尝试:

  1. android:textAllCaps="false"

  2. 中使用layout-v21
  3. 以编程方式更改按钮的转换方法。 mButton.setTransformationMethod(null);

  4. 检查Allcaps的样式

  5. 注意:API版本14中提供了public void setAllCaps (boolean allCaps) android:textAllCaps

答案 1 :(得分:154)

以下是我在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>

答案 2 :(得分:101)

通过设置按钮的TransformationMethod,例如

,可在应用程序代码中修复此问题
mButton.setTransformationMethod(null);

答案 3 :(得分:62)

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

android:textAllCaps="false"
style="@style/Base.TextAppearance.AppCompat"

答案 4 :(得分:54)

在样式中添加此行

ReqID = getIntent().getStringExtra("Rid");

答案 5 :(得分:31)

Lollipop默认附带“textAllCaps true”,因此您必须手动将其设为false

答案 6 :(得分:31)

这个正在运行....只需在底部代码的代码中添加以下代码:

android:textAllCaps="false"

它应该停用U试图输入小的大写字母。

答案 7 :(得分:23)

添加android:textAllCaps =&#34; false&#34;在<Button>标记中表示它。

答案 8 :(得分: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>

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

答案 9 :(得分:10)

在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"/>

希望这有帮助。

答案 10 :(得分:8)

在Android Studio IDE中,您必须单击“过滤器”图标以显示专家属性。然后你会看到<?php require 'vendor/autoload.php'; ?> <html> <script src="//js.pusher.com/2.2/pusher.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <script type="text/javascript" language="javascript"> var pusher = new Pusher('key'); var channel = pusher.subscribe('betfair'); channel.bind('bets', function(data) { var a = data.market_id; var b = data.selection; var c = data.stake; var d = data.odd; var e = data.bet_type; record(a, b, c, d, e); }); function record(a,b,c,d,e) { console.log(a); jQuery.ajax({ type: "POST", url: 'time2.php', data: {a, b , c , d, e}, success:function(record) { console.log(data); } }); } </script> </html> 属性。检查一下,然后取消选中它。

答案 11 :(得分:8)

您可以在按钮上添加android:textAllCaps="false"

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

答案 12 :(得分:6)

Java:

yourButton.setAllCaps(false);

科特琳:

yourButton.isAllCaps = false

XML:

android:textAllCaps="false"

样式:

    <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>

在布局中:

   <Button
      .
      .
      style="@style/yourButtonStyle"
      .
      .
   />

答案 13 :(得分:3)

在您的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"
           />

答案 14 :(得分:2)

如果您使用appcompat-v7,则可以继承AppCompatButtonsetSupportAllCaps(false),然后将此类用于所有按钮。

/**
 * Light extension of {@link AppCompatButton} that overrides ALL CAPS transformation
 */
public class Button extends AppCompatButton {
    public Button(Context context, AttributeSet attrs) {
        super(context, attrs);
        setSupportAllCaps(false);
    }

    public Button(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        setSupportAllCaps(false);
    }
}

请参阅AppCompatButton#setSupportAllCaps(boolean) Android文档。

答案 15 :(得分:2)

如果您到达此处是因为您的Facebook按钮文字全部显示,那么只需在您的xml文件中添加此android:textAllCaps="false"即可。它对我有用。

答案 16 :(得分:2)

好的,刚碰到这个。棒棒糖中的按钮全部大写,字体重置为“正常”。但在我的情况下(Android 5.02)它正确地在一个布局中工作,而不是另一个布局!?
更改API不起作用。
设置为全部大写需要min API 14和字体仍然重置为“正常”。

这是因为如果没有一个定义的话,Android材质样式会强制更改样式(这就是为什么它在我的一个布局中工作而不是另一个因为我定义了一种风格。)
所以简单的解决方法是在每个活动的清单中定义一个样式,在我的例子中只是:
android:theme =“@ android:style / Theme.NoTitleBar.Fullscreen“
(希望这可以帮助某人,昨晚能节省我几个小时)

答案 17 :(得分:0)

我不知道为什么@ user1010160的答案得分为0.如果我有足够的声誉,我会给它+1。

由于我的应用程序专为API少于14而设计,我不想在我的程序中添加代码,因此在找到答案之前我找不到解决方案。他说的是,即使你已经完成了应用程序样式中所需的操作,除非你为你的活动添加一个样式并且你将textAllCaps设置为false,否则它将无法工作。

为活动设置样式是不够的(我的活动有样式),因为样式可能默认为AllCaps属性。您必须在活动中明确地将该属性设置为false。

我现在在应用程序和清单文件的活动部分都有它。

答案 18 :(得分:0)

默认情况下,Android中的Button提供所有caps关键字。如果希望按钮文本为小写或大小写混合,则可以使用textAllCaps

禁用android:textAllCaps="false"标志

答案 19 :(得分:0)

另一个Kotlin编程方式:

mButton.transformationMethod = null