LinearLayout使用权重属性(高度)切断TextView文本

时间:2017-10-17 23:42:03

标签: android android-layout xamarin android-linearlayout

我想为每个Android设备制作一个设计。为此,我将LinearLayouts与高度一起使用,并使用百分比解决方案。

屏幕分为多个部分(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 个答案:

答案 0 :(得分: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)
};