2017-08-30 95 views
0

因此,我正在使用庫調整文本大小以適合範圍:https://github.com/grantland/android-autofittextview。我想要做的是循環訪問文本視圖的ArrayList並查找最小文本大小,然後將該文本大小設置爲每個文本視圖。 我的Java代碼:Android - 設置文本大小以編程方式切斷單詞

//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的變化大小,但沒有的話本身的大小,所以我得到削減了一半的話(例外製作字whos大小我正在使用,調整大小的AutoFit庫): enter image description here

有關如何解決此問題的任何想法?

我的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> 
+2

增加布局高度 –

+0

它是沒有用的。因爲我的目的是根據文本的最小尺寸調整文本的大小......因爲您可以看到文本未被調整大小,所以文本的大小保持不變...... – Alphonse

+0

getTextSize()返回文本的實際像素尺寸。嘗試TypedValue.COMPLEX_UNIT_PX – PrisonMike

回答

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()); 
    } 
相關問題