textview會把右邊控件擠出屏幕外的問題

普通的textview後面跟一個控件的狀況仍是不較好解決的, 好比這樣的:android

狀況1、

姓名textview後面跟隨一個性別的textview, 姓名只顯示一行超過一行顯示「...」,若是佈局這樣寫:

<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">

        <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginRight="10dp" android:ellipsize="end" android:maxLines="1" android:textColor="@color/color_333333" android:textSize="16sp" tools:text="楊洋洋" />

        <TextView android:id="@+id/tv_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="女" />

        <TextView android:id="@+id/tv_age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginStart="10dp" android:layout_marginLeft="10dp" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="28歲" />
    </LinearLayout>
複製代碼

當名字很長的時候你會發現後面的性別和年齡被擠沒了; markdown

這個解決辦法也很簡單,給名字的textview設置 android:layout_weight="1" 就能夠了;佈局

<TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:layout_marginRight="10dp" android:ellipsize="end" android:maxLines="1" android:textColor="@color/color_333333" android:textSize="16sp" tools:text="楊洋洋" />
複製代碼

這樣;post

狀況2、

狀況3、

像是這種佈局若是名字字數比較少直接用相對佈局來作就能夠了,不會有什麼問題;若是遇到變態產品說名字的字數最多有18個或者更多,那就會出現問題了。 spa

<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:background="@color/color_ffffff" android:paddingStart="16dp" android:paddingLeft="16dp" android:paddingTop="16dp" android:paddingEnd="8dp" android:paddingRight="8dp">

    <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="10dp" android:layout_marginRight="10dp" android:textColor="@color/color_333333" android:textSize="16sp" tools:text="楊洋洋" />

    <TextView android:id="@+id/tv_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/tv_name" android:layout_toEndOf="@+id/tv_name" android:layout_toRightOf="@+id/tv_name" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="女" />

    <TextView android:id="@+id/tv_age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/tv_name" android:layout_marginStart="10dp" android:layout_marginLeft="10dp" android:layout_toEndOf="@+id/tv_sex" android:layout_toRightOf="@+id/tv_sex" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="28歲" />

    <TextView android:id="@+id/tv_posttime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/tv_name" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:textColor="@color/color_999999" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="剛剛" />
</RelativeLayout>
複製代碼

解決辦法其實和第一種同樣,核心都是讓名字textview外面包裹一層佈局好比 Linearlayout ,而且設置寬度爲 wrap_content,而後textview加上 android:layout_weight="1";code

<RelativeLayout android:id="@+id/top_lay" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">

    <LinearLayout android:id="@+id/top_name_lay" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal">

        <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal">

            <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="10dp" android:layout_marginRight="10dp" android:layout_weight="1" android:textColor="@color/color_333333" android:textSize="16sp" tools:text="楊洋洋" />

            <TextView android:id="@+id/tv_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="女" />

            <TextView android:id="@+id/tv_age" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" android:layout_marginStart="10dp" android:layout_marginLeft="10dp" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="28歲" />
        </LinearLayout>
    </LinearLayout>

    <TextView android:id="@+id/tv_posttime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/top_name_lay" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:textColor="@color/color_666666" android:textSize="13sp" tools:text="剛剛" />
</RelativeLayout>
複製代碼

// TODO 先記錄有時間再完善orm

相關文章
相關標籤/搜索