我在线性布局中有一个文本视图
<LinearLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.8"
android:orientation="vertical"
android:id="@+id/textLayout"
android:background="@drawable/bg"
android:gravity="center"
android:layout_gravity="center">
<TextView
android:id="@+id/detail_text"
android:text="hello"
android:background="#55000000"
android:lineSpacingExtra="5dp"
app:autoSizeMinTextSize="12sp"
app:autoSizeMaxTextSize="100sp"
app:autoSizeStepGranularity="2sp"
app:autoSizeTextType="uniform"
android:textColor="@android:color/white"
android:layout_margin="10dp"
android:layout_gravity="center"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</TextView>
</LinearLayout>
在build.gradle中,我有
dependencies {
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:cardview-v7:26.1.0'
implementation 'com.android.support:recyclerview-v7:26.1.0'
implementation 'com.google.android.gms:play-services-ads:11.4.2'
implementation 'com.android.support:support-compat:26.0.0'
}
但是它仅显示固定大小(最小大小)的文本。不会根据电话宽度自动调整大小;
答案 0 :(得分:1)
不建议将wrap_content
用于layout_height
或layout_width
,因为它可能不起作用。您需要为layout_height
使用固定值。
来自docs
如果您在XML文件中设置了自动调整大小,则不建议使用 layout_width或layout_height属性的值“ wrap_content” 一个TextView。可能会产生意外的结果。
答案 1 :(得分:0)
您需要为layout_width或layout_height分配一个固定值,自动文本大小调整属性才能起作用。
答案 2 :(得分:0)
检查此方法:
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)
它看起来像这样
TextViewCompat.setAutoSizeTextTypeWithDefaults(
findViewById(R.id.detail_text),
TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM)
也来自https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview#setting-textview-autosize的使用支持库
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
app:autoSizeTextType="uniform"
app:autoSizeMinTextSize="12sp"
app:autoSizeMaxTextSize="100sp"
app:autoSizeStepGranularity="2sp" />
</LinearLayout>