繁体   English   中英

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

[英]Change size of text based on number of words - android

我正在使用一个库来帮助将文本自动适合按钮,但是,即使它适用于三部android手机,对于较大的android手机,某些文本的大小也会随机缩小,即使它们不需要。 屏幕截图示例显示: 在此处输入图片说明

因此,我有了一个想法。 我将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);

首先将这些行dimens.xml res/values文件夹的dimens.xml中,以定义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);
    }

我希望我没有错别字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM