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

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

时间: 2024-10-27 02:20:56

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

我的Android进阶之旅------&amp;gt;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_conten

我的Android进阶之旅------&gt;Android疯狂连连看游戏的实现之实现游戏逻辑(五)

在上一篇<我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)>中提到的两个类: GameConf:负责管理游戏的初始化设置信息. GameService:负责游戏的逻辑实现. 其中GameConf的代码如下:cn\oyp\link\utils\GameConf.java package cn.oyp.link.utils; import android.content.Context; /** * 保存游戏配置的对象

我的Android进阶之旅------&gt; Android在TextView中显示图片方法

面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包含图像的文本信息),并简要说明实现方法. 答案:Android SDK支持如下显示富文本信息的方式. 1.使用TextView组件可以显示富文本信息.在TextView组件中可以使用富文本标签来显示富文本信息,这种标签类似于HTML标签,但比HTML标签简单,支持有限的几种显示富文本的方式.如<font>标签用于设置字体和颜色,<b>用于设置粗体.包含这些标签的文本不能直接作为TextView.se

我的Android进阶之旅------&gt; Android为TextView组件中显示的文本添加背景色

通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article/details/46916963) 我们学会了在TextView中显示图片的方法,现在我们来学习如何为TextView组件中显示的文本添加背景色.要求完成的样子如图所示: 首先来学习使用BackgroundColorSpan对象设置文字背景色,代码如下: TextView textView=(TextV

我的Android进阶之旅------&gt;Android利用Sensor(传感器)实现水平仪功能的小例

这里介绍的水平仪,指的是比较传统的气泡水平仪,在一个透明圆盘内充满液体,液体中留有一个气泡,当一端翘起时,该气泡就会浮向翘起的一端. 利用方向传感器返回的第一个参数,实现了一个指南针小应用. 我的Android进阶之旅------>Android利用Sensor(传感器)实现指南针功能 (地址:http://blog.csdn.net/ouyang_peng/article/details/8801204) 接下来,我们利用返回的第二.三个参数实现该水平仪.因为第二个参数,反映底部翘起的角度(当

我的Android进阶之旅------&gt;Android字符串资源中的单引号问题error: Apostrophe not preceded by 的解决办法

刚刚在string字符串资源文件中,写了一个单引号,报错了,错误代码如下 error: Apostrophe not preceded by \ (in OuyangPeng's blog ) 资源文件如下: <?xml version="1.0" encoding="utf-8"?> <resources> <string name="ouyang">OuyangPeng's blog </string

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

面试题:为一个充满整个屏幕的LinearLayout布局指定背景图,是否可以让背景图不充满屏幕?请用代码描述实现过程. 解决此题,可以使用嵌入(Inset)图像资源来指定图像,然后像使用普通图像资源一样使用嵌入图像资源. 语法如下: <?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android&

我的Android进阶之旅------&gt;Android使用AlarmManager全局定时器实现定时更换壁纸

该DEMO将会通过AlarmManager来周期的调用ChangeService,从而让系统实现定时更换壁纸的功能. 更换壁纸的API为android.app.WallpaperManager,它提供了clear()方法来清除壁纸,还提供了如下方法来设置壁纸. setResource(int resid)将壁纸设置为resid资源所代表的图片 setBitmap(Bitmap bitmap)将壁纸设置为bitmap所代表的位图 setStream(InputStream data)将壁纸设置为d

我的Android进阶之旅------&gt;Android &lt;requestFocus /&gt;标签的用法

布局资源文件的根节点可以使用容器控件(如LinearLayout.FrameLayout等),也可以使用非容器控件(如:EditText.TextView等).对于非容器控件,只能在非容器控件标签中放<requestFocus />标签,表示将当前控件设为焦点.如下代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="