android:TextSize问题

来源:互联网 发布:燕大图书馆网络 编辑:程序博客网 时间:2024/06/05 07:23
今天写了个外部类监听器改变字体大小但是无论如何当点击缩小按钮时字体都反而变大:
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
原创粉丝点击