一个特殊的横向布局实现方式
“王小二”文字长度可变性很大,“经理”文字长度变化不大,“2017-01-01”文字长度变化不大。
当“王”部分文字较少时,要求如下布局效果:
当“王小二”部分文字较多时,要求如下布局效果:
那么,实现方法如下:
其中关键点就在于RelativeLayout的android:gravity="left"属性和它的子view (android:id="@+id/tv_job")android:layout_alignParentRight="true"属性的配合使用。另外,当RelativeLayout的宽度为android:layout_width="wrap_content",并且它的一个子view还指定了android:layout_alignParentRight="true"属性的话,这个RelativeLayout的宽度实际上是android:layout_width="match_parent"的效果。因为子view是靠RelativeLayout右边对齐,那么子view的位置将一直往右伸展,直至父布局能达到的最大宽度为止,就造成了RelativeLayout的宽度一直被拉伸,最终表现成match_parent的效果。
layout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="top" android:orientation="horizontal"> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left"> <TextView android:id="@+id/tv_job" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginLeft="@dimen/default_config_margin_icon_text_30" android:background="@drawable/background_blue_circle" android:paddingLeft="5dp" android:paddingRight="5dp" android:text="经理" android:textColor="@color/white" /> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@id/tv_job" android:text="王小二王小二王小二王小二王小二王小二王小二王小二王小二王小二王小二" android:textSize="@dimen/important_text_size_48" /> </RelativeLayout> <TextView android:id="@+id/tv_edit_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="top" android:layout_marginLeft="@dimen/default_config_margin_icon_text_30" android:text="2017-01-01" android:textSize="@dimen/normal_text_size_39" /> </LinearLayout> </LinearLayout>