【问题标题】:setTextSize(++size) increases font size a lot not just a littlesetTextSize(++size) 大大增加了字体大小,而不仅仅是一点点
【发布时间】:2014-06-07 12:44:54
【问题描述】:

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

但同样的事情。

【问题讨论】:

  • getTextSize():此 TextView 中默认文本大小的大小(以像素为单位)。 - 试试setTextSize(TypedValue.COMPLEX_UNIT_PX, ++tempSize);
  • @MarcoAcierno 这行得通。 :) 您可以将其发布为答案。
  • :) 好的作为答案发布

标签: android font-size increment


【解决方案1】:
getTextSize()

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

使用

setTextSize(TypedValue.COMPLEX_UNIT_PX, ++tempSize);

setTextSize 默认使用scaled pixel (setTextSize(int)),setTextSize(int, int) 你说要使用的单位。

【讨论】:

    【解决方案2】:

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

    但随后getTextSize()pixel 单位返回给您,而不是 缩放像素 单位。

    所以解决方案是调用另一个setTextSize 方法,该方法允许您显式设置单元类型。

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

    What's the relationship between pixels and scaled pixels

    【讨论】:

      【解决方案3】:
      void setTextSize(int unit, float size) : 
      

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

      【讨论】:

        猜你喜欢
        • 2016-02-15
        • 2018-07-20
        • 1970-01-01
        • 1970-01-01
        • 2020-04-13
        • 2011-06-29
        • 2013-03-02
        • 2020-07-30
        • 2016-12-18
        相关资源
        最近更新 更多