AppCompatActivity的按钮文本的字体样式已更改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AppCompatActivity的按钮文本的字体样式已更改相关的知识,希望对你有一定的参考价值。

将我的活动的父级从Activity更改为AppCompatActivity后,按钮上的字体发生了变化。例如,Remove-> REMOVE。对于其他Vews,字体没有改变。

为什么按钮上的字体会发生变化,如何恢复原始字体?

按钮:

            <Button
            android:id="@+id/buttonAddProduct"
            tools:text="Remove"
            android:layout_width="match_parent"
            android:textSize="13dp"
            android:layout_weight="1"
            style="@style/btns_blue_big" />

样式:

<style name="btns_text_big">
    <item name="android:textSize">@dimen/text_size_big</item>
    <item name="android:textColor">@color/colorMainWhite</item>
</style>

<style name="btns_lo_big" parent="btns_text_big">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">48dp</item>
</style>

<style name="btns_blue_big" parent="btns_lo_big">
    <item name="android:background">@drawable/button_dialog_positive_shape</item>
</style>
答案

由于Google的Material Design主题,这种变化发生了。

基本上,当您将Activity更改为AppCompatActivity时,您还需要更改应用程序的主题以从Theme.AppCompat扩展。此更改会使每个视图的设计与主题相匹配。

以下是Holo主题和AppCompat主题之间的示例:

Holo Theme

Material / AppCompat Theme

正如您所看到的,AppCompat主题中按钮的默认实现使用全部大写,因此您需要更改它们。

一个简单的解决方法是在你的样式xml中添加这些:

<style name="MyAppTheme" parent="Theme.AppCompat">
    <item name="buttonStyle">@style/MyAppTheme.Button</item>
    <item name="android:buttonStyle">@style/MyAppTheme.Button</item>
</style>

<style name="MyAppTheme.Button" parent="Base.Widget.AppCompat.Button">
    <item name="android:textAllCaps">false</item>
</style>
另一答案

在AppcompatActivity中,默认情况下按钮文本设置为大写。我不知道为什么。但是如果要在xml中为该按钮禁用它,请设置android:textAllCaps="false"

以编程方式:button.setTransformationMethod(null);

另一答案

使用Material(或DeviceDefault with API 21+)主题时,按钮文本默认为全大写。这是按预期工作的。如果您不想要,可以在您的风格中使用以下属性

<item name="android:textAllCaps">false</item>
<item name="textAllCaps">false</item>

参考文献是Why is my Button text forced to ALL CAPS on Lollipop?

以上是关于AppCompatActivity的按钮文本的字体样式已更改的主要内容,如果未能解决你的问题,请参考以下文章

Android开发:隐藏标题|状态栏沉浸|状态栏字体变色(继承AppCompatActivity)

Android开发:隐藏标题|状态栏沉浸|状态栏字体变色(继承AppCompatActivity)

更改单选按钮旁边的字体大小

无论用户字体大小如何,如何使文本适合按钮?

如何更改导航栏中按钮文本的字体大小?

更改 Shell 类的后退按钮的覆盖文本的字体大小(以及,如果可能,其他字体格式属性)