我的Android进阶之旅------>android Button上面的英文字符串自己主动大写的问题解决

Posted jzssuanfa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的Android进阶之旅------>android Button上面的英文字符串自己主动大写的问题解决相关的知识,希望对你有一定的参考价值。

           今天碰到一个关于Button的问题:android Button上面的英文字符串会自己主动变成大写,执行的Android 5.1版本号,例如以下图所看到的:

图1:Button

技术分享

图2:TextView

技术分享


这个Button的定义代码例如以下

  <Button
            android:id="@+id/addContacts"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/contactList_addContact" />
TextView的定义代码例如以下

 <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_margin="10dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="@string/contactList_addContact"
        android:textSize="24sp" />

引用同一个字符串contactList_addContact。字符串内容例如以下:

<string name="contactList_addContact">Add</string>

可是Button显示出来就是ADD。而TextView显示出来就是Add。之前还真的没遇到过。郁闷。并且其它的Button都是显示正常,例如以下所看到的:

技术分享

这两个按钮定义代码例如以下:

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_margin="10dp"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_cancel"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="@string/btn_cancel"
            android:textColor="@color/black" />

        <Button
            android:id="@+id/btn_save"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="@string/btn_save"
            android:textColor="@color/black" />
    </LinearLayout>

所引用的字符串为:

 <string name="btn_cancel">Cancel</string>
 <string name="btn_save">Save</string>


    好吧。以上就是问题的内容。至于为什么会有这个问题我预计是Android 5.1的SDK把Button的默认Style改了,样式默认把textAllCaps设置为true了,也没有去细致研究。查看系统选代码:frameworks/base/core/res/res/values/styles_material.xml的第233行,代码例如以下:

<style name="TextAppearance.Material.Button">
        <item name="textSize">@dimen/text_size_button_material</item>
        <item name="fontFamily">@string/font_family_button_material</item>
        <item name="textAllCaps">true</item>
        <item name="textColor">?

attr/textColorPrimary</item>
</style>


技术分享

能够发现真的是把textAllCaps属性设置为true了。


    以下来说说怎么解决问题。

仅仅须要在Add按钮的定义中加上一个  android:textAllCaps="false"属性就可以,该属性是用来设置是否使用大写字母来呈现文本。


即把代码改成例如以下:

  <Button
            android:id="@+id/addContacts"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textAllCaps="false"
            android:text="@string/contactList_addContact" />

好吧,这样就攻克了,改完后的效果图例如以下:

技术分享


       


         ====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址http://blog.csdn.net/ouyang_peng

====================================================================================

技术分享






















以上是关于我的Android进阶之旅------&gt;android Button上面的英文字符串自己主动大写的问题解决的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅------&gt;怎样将Activity变为半透明的对话框?

我的Android进阶之旅------&gt;Android中android:windowSoftInputMode的使用方法

我的Android进阶之旅------&gt;Android关于Log的一个简单封装

我的Android进阶之旅------&gt;Android嵌入图像InsetDrawable的使用方法

我的Android进阶之旅------&gt;android中getLocationInWindow 和 getLocationOnScreen的差别

我的Android进阶之旅------&gt;解决:Execution failed for task &#39;:app:transformResourcesWithMergeJav