Lollipop 在我的应用程序中将按钮的文本大写

Lollipop capitalizes Buttons' text in my app

我的应用程序遇到了一个奇怪的问题。当我在真实设备(Android 4.4.4)上测试它时,我所有按钮的文本字段看起来都是我想要的(小写字母)。但是当我在模拟器 (Android 5.0.1) 上启动我的应用程序时,所有 Button 文本字段都大写。这种行为的原因是什么?我的应用程序中的一些示例按钮:

示例按钮 1:

    <Button
        android:id="@+id/button5"
        android:layout_width="match_parent"
        style="?android:attr/borderlessButtonStyle"
        android:layout_height="wrap_content"
        android:text="@string/finish"
        android:textColor="#FFFFFF"
        android:textSize="30sp"
     />

示例按钮 2:

    <Button
        android:id="@+id/button3"
        android:layout_width="0dp"
        style="?android:attr/borderlessButtonStyle"
        android:layout_height="wrap_content"
        android:text="@string/flower"
        android:textColor="#FFFFFF"
        android:textSize="30sp"
        android:drawableLeft="@drawable/flower"
        android:layout_weight=".75"
        />

这个问题有什么解决办法。我希望我的应用程序在所有 sw 版本上看起来都一样。

从 Android 5.0 开始,Buttons 自动将其文本大写。这符合新的 material 设计指南,您可以找到 here.

如果您想强制按钮显示文本,就像在以前的平台版本中那样,您可以在 XML 中设置 android:textAllCaps="false"。但是,我建议不要这样做。用户希望他们的应用在 Android Lollipop 中看起来 material,这意味着他们希望您的按钮以所有大写字母显示文本(即使您的应用在以前的平台版本中显示的文本不同)。

实际上这是可能的:

new AlertDialog.Builder(context, R.style.StackedAlertDialogStyle)

StackedAlertDialogStyle:

  <style name="StackedAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="buttonBarButtonStyle">@style/StackedButtonBarButtonStyle</item>
    </style>

    <style name="StackedButtonBarButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
        <item name="android:layout_gravity">right</item>
        <item name="android:textAllCaps">false</item>
    </style>

现在您可以看到非大写的按钮了。