我当时正在使用一个库来帮助将文本自动调整为按钮,但是,即使它适用于三部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);
答案 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);
}
我希望我没有错字。