setTextSize(++ size)不仅增加了很多字体大小

时间:2014-04-22 22:34:59

标签: android font-size increment

我正在尝试实现一个按钮,它会增加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;

但同样的事情。

3 个答案:

答案 0 :(得分:5)

getTextSize()
  

此TextView中默认文本大小的大小(以像素为单位)。

使用

setTextSize(TypedValue.COMPLEX_UNIT_PX, ++tempSize);

setTextSize默认使用scaled pixelsetTextSize(int)),setTextSize(int, int)表示要使用的单位。

答案 1 :(得分:4)

您正在呼叫setTextSize(float size)。根据文档,这将以缩放像素为单位设置文本大小。

但是getTextSize()然后以像素为单位将其返还给您,而不是缩放像素单位。

因此解决方案是调用另一个允许您显式设置单位类型的setTextSize方法。

这是关于单位差异的stackoverflow问题:

  

What's the relationship between pixels and scaled pixels

答案 2 :(得分:0)

void setTextSize(int unit, float size) : 

将默认文本大小设置为给定单位和值