关闭

android:TextSize问题

1593人阅读 评论(0) 收藏 举报
分类:
今天写了个外部类监听器改变字体大小但是无论如何当点击缩小按钮时字体都反而变大:
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 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.

public void setTextSize (int unit, float size)

Added in API level 1

Set the default text size to a given unit and value. See TypedValue for the possible dimension units.

Related XML Attributes
另一种方法可以带一个参数设置单位:
关键在于:发现getTextSize返回值是以像素(px)为单位的,而setTextSize()是以sp为单位的 
所以我们要改变单位 
 text.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:58485次
    • 积分:976
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:29篇
    • 译文:0篇
    • 评论:5条