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

著论准过秦,作赋拟子虚。这篇文章主要讲述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主题之间的示例:
AppCompatActivity的按钮文本的字体样式已更改

文章图片

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

文章图片

正如您所看到的,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"
【AppCompatActivity的按钮文本的字体样式已更改】以编程方式: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?

    推荐阅读