我正在尝试实现一个按钮,它会增加TextView
中文字的字体大小我已经想出了以下内容:
Button biggerFont;
TextView centerTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
biggerFont = (Button) findViewById(R.id.btn_bigger_font);
centerTextView = (TextView) findViewById(R.id.textView_center);
biggerFont.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
float tempSize = centerTextView.getTextSize();
Log.d(USER_SERVICE, Float.toString(tempSize));
centerTextView.setTextSize(++tempSize);
}
});
// ...
}
但这会增加字体大小!每次我点击按钮。在记录时,我检查并且tempSize
增加不是1但是不规则地增加(44-> 90-> 182)。
我也尝试过使用
float tempSize = centerTextView.getTextSize() + 1;
但同样的事情。
答案 0 :(得分:5)
getTextSize()
此TextView中默认文本大小的大小(以像素为单位)。
使用
setTextSize(TypedValue.COMPLEX_UNIT_PX, ++tempSize);
setTextSize
默认使用scaled pixel
(setTextSize(int)
),setTextSize(int, int)
表示要使用的单位。
答案 1 :(得分:4)
您正在呼叫setTextSize(float size)
。根据文档,这将以缩放像素为单位设置文本大小。
但是getTextSize()
然后以像素为单位将其返还给您,而不是缩放像素单位。
因此解决方案是调用另一个允许您显式设置单位类型的setTextSize
方法。
这是关于单位差异的stackoverflow问题:
答案 2 :(得分:0)
void setTextSize(int unit, float size) :
将默认文本大小设置为给定单位和值