[英]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,而我想执行以下操作:
如何做到这一点?
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.