根据字数更改文本大小-Android

时间:2018-08-06 22:22:45

标签: java android android-studio

我当时正在使用一个库来帮助将文本自动调整为按钮,但是,即使它适用于三部android手机,对于较大的android手机,某些文本的大小也会随机缩小,即使它们不需要。截图示例:enter image description here

所以我有了一个想法。我将xml设置为普通按钮,如下所示:

<Button
                android:id="@+id/btnans4"
                android:layout_width="match_parent"
                android:layout_height="45dp"
                android:layout_marginBottom="10dp"
                android:layout_marginTop="5dp"
                android:background="@drawable/blue"
                android:padding="5dp"
                android:text="Answer - 4"
                android:textColor="@color/white"
                android:textSize="15sp"/>

按钮1、2和3具有与上述相同的xml,但ID和文本不同。

我正在考虑使用动态文本大小。因此,我将从上面的xml中删除textSize 15sp,而我想执行以下操作:

  • 如果该按钮包含5个以上的单词,则该按钮的文本大小= 12sp,否则为15sp。

如何实现?

Button btnans1, btnans2, btnans3, btnans4;

       btnans1 = findViewById(R.id.btnans1);
        btnans2 = findViewById(R.id.btnans2);
        btnans3 = findViewById(R.id.btnans3);
        btnans4 = findViewById(R.id.btnans4);

1 个答案:

答案 0 :(得分:1)

首先将这些行放在dimens.xml文件夹的res/values中,以定义2种所需的文本大小:

<dimen name="btn_text_size_small">12sp</dimen>
<dimen name="btn_text_size_normal">15sp</dimen>

接下来使用此代码应用文本大小:

    Button[] buttons = {btnans1, btnans2, btnans3, btnans4};

    for (int i = 0; i < buttons.length; i++) {
        String text = buttons[i].getText().toString().trim();

        String[] words = text.split(" ");

        Float size;

        if (words.length > 5) {
            size = getResources().getDimension(R.dimen.btn_text_size_small);
        } else {
            size = getResources().getDimension(R.dimen.btn_text_size_normal);
        }

        buttons[i].setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
    }

我希望我没有错字。