2017-10-17 106 views
1

我想爲每個Android設備進行設計。爲此,我使用LinearLayouts的高度和百分比解決方案。LinearLayout通過使用weight屬性(高度)來切斷TextView文本

屏幕被分成許多部分(帶權重的LinearLayouts)。在這些LinearLayouts中是元素,就像一個TextView。

但是,如果我與高度的LinearLayout可以切斷底部的TextView。

如何根據權重動態更改文本大小?

代碼:

<LinearLayout 
    android:layout_height="0dp" 
    android:layout_width="match_parent" 
    android:layout_weight="0.04" 
    android:weightSum="1"> 
    <LinearLayout 
     android:layout_height="match_parent" 
     android:layout_width="0dp" 
     android:layout_weight="0.05799" /> 
    <LinearLayout 
     android:layout_height="match_parent" 
     android:layout_width="0dp" 
     android:layout_weight="0.86951"> 
     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="left" 
      android:text="Benachrichtigungen" 
      android:textStyle="bold" 
      android:textSize="20sp" 
      android:id="@+id/header"/> 
    </LinearLayout> 
    <LinearLayout 
     android:layout_height="match_parent" 
     android:layout_width="0dp" 
     android:layout_weight="0.0722106" /> 
</LinearLayout> 

圖片:

Image

+1

屏幕截圖和您當前的xml可能有助於更快地回答這個問題。 –

+0

我已更新我的問題。謝謝你的建議。 :) –

+0

你需要約束你的身高嗎?如果沒有設置外部LinearLayout高度wrap_content也許。 –

回答

1

我可以以編程方式解決我的問題:

此代碼是在我的片段OnCreateView方法。它根據TextView的高度生成文本大小。

view.ViewTreeObserver.GlobalLayout += (sender, e) => 
{ 
    var headerTextView = view.FindViewById<TextView>(Resource.Id.header); 
    var headerTextViewHeightInSp = PxToSp(view.Context, headerTextView.Height); 

    headerTextView.SetTextSize(ComplexUnitType.Sp, headerTextViewHeightInSp - 5); // 5 is a offset (space between outter borderline and text) 
}; 
相關問題