您的位置:首页 > 移动开发 > Android开发

Android Studio Button英文字符自动变成大写的问题

2016-05-16 17:02 731 查看

发现问题

在5.0手机上调试的时候,发现Button上的英文字符全部变成了大写,5.0以下系统是正常的。

布局文件中:



界面显示:



分析问题

1.到这里只能从源码角度去分析问题了。在AndroidXRef上看了5.0系统TextView的源码(因为Button是继承TextView的,而且Button源码也没几行,直接看TextView就可以了。)在TexViw源码里面发现了两处关键的代码:

第一处:



第二处:



2.到这里推测是因为5.0主题引起的,于是找了下主题文件,发现5.0里面frameworks/base/core/res/res/values/styles_material.xml



解决方法:

1.在布局文件Button下增加
android:textAllCaps="false"


2.在代码中,
mButton.setTransformationMethod(null)


3.既然是主题引起的,我们可以自定义Button主题

<style name="MyButton" parent="Widget.AppCompat.Button">
<item name="android:textAllCaps">false</item>
</style>


4.自定义Button

public class MyButton extends Button {
public Button(Context context, AttributeSet attrs) {
super(context, attrs);
setSupportAllCaps(false);
}
public Button(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setSupportAllCaps(false);
}
}


参考:

http://stackoverflow.com/questions/26958909/why-is-my-button-text-coerced-to-all-caps-on-lollipop

原文链接:

http://blog.liangruijun.com/2016/01/16/Android%E5%A1%AB%E5%9D%91%EF%BC%9AAndroid5.0%20Button%E8%8B%B1%E6%96%87%E5%AD%97%E7%AC%A6%E8%87%AA%E5%8A%A8%E5%8F%98%E6%88%90%E5%A4%A7%E5%86%99%E7%9A%84%E9%97%AE%E9%A2%98/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android android studio xml