更新:
我创建了一个 CustomTextView 类,将 ondraw 方法动态覆盖为 setTextSize,而不是设置每个 TextView。
public class CustomTextView extends TextView {
private static final String TAG = "CustomTextView";
public CustomTextView(Context context) {
super(context);
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override protected void onDraw(Canvas canvas) {
if (getLineCount() == 1) {
setTextSize(40);
} else {
setTextSize(20);
}
super.onDraw(canvas);
}
}
layout_custom.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_marginTop="98dp"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="1"
>
<com.example.blizzard.sof.CustomTextView
android:id="@+id/customtextview1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="fill"
android:layout_weight="0.5"
android:background="@android:color/holo_blue_dark"
android:gravity="center"
android:textColor="@android:color/holo_red_dark"
android:text="Word1 \nWord2"
/>
<com.example.blizzard.sof.CustomTextView
android:id="@+id/customtextview2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="fill"
android:layout_marginLeft="16dp"
android:layout_weight="0.5"
android:background="@android:color/holo_blue_dark"
android:gravity="center"
android:textColor="@android:color/holo_red_dark"
android:text="B"
/>
</LinearLayout>
</LinearLayout>
确保将 com.example.blizzard.sof.CustomTextView 替换为适当的包名称。
预览:
上一个答案:
您可以使用AutoFitTextView 库。
将所有文本视图转换为AutofitTextView 并确保为属性android:textSize="?" & 设置适当的值
autofit:minTextSize="?".
示例: