android:TextSize问题
2015-07-09 16:26
567 查看
今天写了个外部类监听器改变字体大小但是无论如何当点击缩小按钮时字体都反而变大:
package jxufe.penglong.edittest;
import android.util.TypedValue;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class OutterListener implements OnClickListener {
private TextView text;
private float size=12;
public OutterListener(TextView textView){
this.text=textView;
}
public void onClick(View v) {
size=text.getTextSize();
switch (v.getId()) {
case R.id.bigger:
size+=4;
break;
case R.id.smaller:
size=size-4;
break;
default:
break;
}
if(size>=72){
size=72;
}
if(size<=4){
size=4;
}
text.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
System.out.println(text.getTextSize());
}
}
检查代码逻辑没有问题,只能打印点击后字体大小跟踪下,发现字体无规律增大,自然而然想到是不是减小的值太小了,然后我设置每次减小值大于字体大小的一半,情况还是如此;
后来只有查找android帮助文档:发现setTextSize有两个方法, 分别为:
Added in API level 1
Set the default text size to the given value, interpreted as "scaled pixel" units. This size is adjusted based on the current density and user font size preference.
Added in API level 1
Set the default text size to a given unit and value. See
the possible dimension units.
Related XML Attributes
另一种方法可以带一个参数设置单位:
关键在于:发现getTextSize返回值是以像素(px)为单位的,而setTextSize()是以sp为单位的
所以我们要改变单位
text.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
package jxufe.penglong.edittest;
import android.util.TypedValue;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class OutterListener implements OnClickListener {
private TextView text;
private float size=12;
public OutterListener(TextView textView){
this.text=textView;
}
public void onClick(View v) {
size=text.getTextSize();
switch (v.getId()) {
case R.id.bigger:
size+=4;
break;
case R.id.smaller:
size=size-4;
break;
default:
break;
}
if(size>=72){
size=72;
}
if(size<=4){
size=4;
}
text.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
System.out.println(text.getTextSize());
}
}
检查代码逻辑没有问题,只能打印点击后字体大小跟踪下,发现字体无规律增大,自然而然想到是不是减小的值太小了,然后我设置每次减小值大于字体大小的一半,情况还是如此;
后来只有查找android帮助文档:发现setTextSize有两个方法, 分别为:
public void setTextSize (float size)
Added in API level 1Set the default text size to the given value, interpreted as "scaled pixel" units. This size is adjusted based on the current density and user font size preference.
public void setTextSize (int unit, float size)
Added in API level 1Set the default text size to a given unit and value. See
TypedValuefor
the possible dimension units.
Related XML Attributes
另一种方法可以带一个参数设置单位:
关键在于:发现getTextSize返回值是以像素(px)为单位的,而setTextSize()是以sp为单位的
所以我们要改变单位
text.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
相关文章推荐
- Vlc for Android 全面阐述
- android tv焦点特效实现浅析
- [Android]解决Fragment无法使用android:onClick属性
- android 样式、9.png图片
- Android版本和API Level对应关系
- android单元测试
- 【转载】Android端手机测试体系
- Android自定义控件
- android 最简单的方式实现旋转进度条
- Android LayoutInflater详解 (转)
- 在Android中引入Java8的lambda表达式
- Android中ListView实现分类二级下拉菜单的效果
- Android之TabHost布局(转)
- Android Studio插件之sexy editor(设置AS背景)
- Android手机定位技术的发展
- Android View 仿iOS SwitchButton
- Android Sdk 国内镜像下载地址
- android:textSize="20dp" 中20dp是什么意思?
- android:ToolBar详解(手把手教程)
- android系统相机的使用、及解决拍照闪退的问题