Api 26 AutoResizeTextView 不工作
Api 26 AutoResizeTextView Not Working
我有一个 TextView,里面有很多布局。
此视图是 RecyclerView
内的一个项目,textxt 是在 Adapter
内以编程方式设置的。
有时文本太大而被截断。因此,我想在 Api 26 中使用自动调整大小功能。但是,它不起作用,即使我更新了支持库,并放入了 xml 属性。
这是我的代码:
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:id="@+id/zmanCard"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
cardview:cardUseCompatPadding="false"
cardview:cardPreventCornerOverlap="false"
cardview:cardCornerRadius="4dp"
cardview:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorPrimary"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_gravity="top"
android:orientation="vertical"
android:background="?attr/colorPrimaryDark">
<!-- The AutoResizeTextView -->
<android.support.v7.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="20dp"
android:id="@+id/zmanCardTitle"
android:textColor="#ffffff"
cardview:autoSizeTextType="uniform"
cardview:autoSizeMaxTextSize="13sp"
cardview:autoSizeMinTextSize="5sp"
cardview:autoSizeStepGranularity="1sp"
android:gravity="center"
android:singleLine="true"
android:ellipsize="none"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="24dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:layout_marginTop="2dp"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:alpha="0.8"
android:id="@+id/zmanCardImage" />
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="7dp"
android:layout_marginLeft="0dp"
android:layout_marginRight="2dp">
<TextView
android:text="5:40"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:id="@+id/zmanCardTime"
android:textColor="#ffffff"
android:ellipsize="none"
android:textSize="18sp"
android:singleLine="true"/>
<ProgressBar
android:id="@+id/zmanProgressBar"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center"
style="@style/Base.Widget.AppCompat.ProgressBar" />
</FrameLayout>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
从您的 TextView 中删除此属性:
android:singleLine="true"
并将其替换为:
android:maxLines="1"
另请注意,自动调整大小框架可以应用的缩放量受 TextView 的宽度 和高度 限制。您已将高度设置为 20dp
,因此文本将无法放大很多。
我有一个 TextView,里面有很多布局。
此视图是 RecyclerView
内的一个项目,textxt 是在 Adapter
内以编程方式设置的。
有时文本太大而被截断。因此,我想在 Api 26 中使用自动调整大小功能。但是,它不起作用,即使我更新了支持库,并放入了 xml 属性。
这是我的代码:
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:id="@+id/zmanCard"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
cardview:cardUseCompatPadding="false"
cardview:cardPreventCornerOverlap="false"
cardview:cardCornerRadius="4dp"
cardview:cardElevation="2dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/colorPrimary"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_gravity="top"
android:orientation="vertical"
android:background="?attr/colorPrimaryDark">
<!-- The AutoResizeTextView -->
<android.support.v7.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="20dp"
android:id="@+id/zmanCardTitle"
android:textColor="#ffffff"
cardview:autoSizeTextType="uniform"
cardview:autoSizeMaxTextSize="13sp"
cardview:autoSizeMinTextSize="5sp"
cardview:autoSizeStepGranularity="1sp"
android:gravity="center"
android:singleLine="true"
android:ellipsize="none"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="24dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:layout_marginTop="2dp"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:alpha="0.8"
android:id="@+id/zmanCardImage" />
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="7dp"
android:layout_marginLeft="0dp"
android:layout_marginRight="2dp">
<TextView
android:text="5:40"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:id="@+id/zmanCardTime"
android:textColor="#ffffff"
android:ellipsize="none"
android:textSize="18sp"
android:singleLine="true"/>
<ProgressBar
android:id="@+id/zmanProgressBar"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center"
style="@style/Base.Widget.AppCompat.ProgressBar" />
</FrameLayout>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
从您的 TextView 中删除此属性:
android:singleLine="true"
并将其替换为:
android:maxLines="1"
另请注意,自动调整大小框架可以应用的缩放量受 TextView 的宽度 和高度 限制。您已将高度设置为 20dp
,因此文本将无法放大很多。