所以我使用一个库来调整文本大小以适应范围:https://github.com/grantland/android-autofittextview。我想要做的是循环文本视图的ArrayList并找到最小的文本大小,然后将该文本大小设置为每个文本视图。 我的Java代码:
//Loop through every textview and get lowest size
float lowestTextSize = textViews.get(0).getTextSize();
for (TextView textView : textViews){
if(lowestTextSize > textView.getTextSize()){
lowestTextSize = textView.getTextSize();
}
}
lowestTextSize = lowestTextSize / getResources().getDisplayMetrics().scaledDensity;
//Loop through every textview and set them all to the lowest text size previously found
for (TextView textView : textViews){
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, lowestTextSize);
}
我的问题是,在为每个textview设置该大小后,textview的大小会发生变化,但不会改变单词本身的大小,所以我会将单词切成两半(异常使我正在使用的单词大小,由AutoFit库调整大小:
关于如何解决这个问题的任何想法?
我的XML代码:
<LinearLayout
android:id="@+id/highestSellingProductLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:gravity="center"
android:orientation="horizontal">
<me.grantland.widget.AutofitTextView
android:id="@+id/highestSellingProduct"
autofit:minTextSize="15sp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:maxLines="1"
android:paddingBottom="5dp"
android:text="NA"
android:textAlignment="center"
android:textColor="@color/colorSuccess"
android:textSize="22sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<me.grantland.widget.AutofitTextView
autofit:minTextSize="15sp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:maxLines="1"
android:paddingBottom="5dp"
android:text="Highest Selling"
android:textAlignment="center"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
答案 0 :(得分:0)
我找到了这个问题。要使用AutofitTextView更改java中文本的大小,我必须在每个textview上使用autofitHelper。以下代码对我有用:
//Loop through every textview and get lowest size
float lowestTextSize = textViews.get(0).getTextSize();
for (TextView textView : textViews){
if(lowestTextSize > textView.getTextSize()){
lowestTextSize = textView.getTextSize();
}
}
lowestTextSize = lowestTextSize / getResources().getDisplayMetrics().scaledDensity;
//Loop through every textview and set them all to the lowest text size previously found
for (TextView textView : textViews){
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, lowestTextSize);
AutofitHelper autofitHelper = AutofitHelper.create(textView);
autofitHelper.setTextSize(textView.getTextSize());
}