layout_weight以及常見屬性解析
阿新 • • 發佈:2019-01-23
LinearLayout中的layout_weight屬性,首先按照控制元件申明的尺寸進行分配,然後將剩下的尺寸按照weight分配
例一:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context=顯示效果為:"com.example.listviewrefreshupdata.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="1" android:gravity="center" android:background="#44ff0000" android:text="111111111111111111111111111"/> <TextView android:layout_width="wrap_content"android:layout_height="50dp" android:gravity="center" android:layout_weight="2" android:background="#4400ff00" android:text="22222"/> <TextView android:layout_width="wrap_content" android:layout_height="50dp" android:layout_weight="3" android:gravity="center" android:background="#440000ff" android:text="3333333333"/> </LinearLayout>
例二:
將三個TextView的寬度都設定為match_parent
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context="com.example.listviewrefreshupdata.MainActivity"> <TextView android:layout_width="match_parent" android:layout_height="50dp" android:layout_weight="1" android:gravity="center" android:background="#44ff0000" android:text="11"/> <TextView android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center" android:layout_weight="2" android:background="#4400ff00" android:text="2"/> <TextView android:layout_width="match_parent" android:layout_height="50dp" android:layout_weight="2" android:gravity="center" android:background="#440000ff" android:text="2"/> </LinearLayout>顯示效果為:
理由:
例三:
如果要實現如下效果:
那麼可以設定父佈局的
android:weightSum屬性為2,然後設定textView的layout_weight為1
即:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="2" tools:context="com.example.listviewrefreshupdata.MainActivity"> <TextView android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:gravity="center" android:background="#44ff0000" android:text="111111111111"/> </LinearLayout>
例四:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context="com.example.listviewrefreshupdata.MainActivity"> <TextView android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:gravity="center" android:background="#44ff0000" android:text="111111111111"/> <TextView android:layout_width="0dp" android:layout_height="50dp" android:gravity="center" android:layout_weight="2" android:background="#4400ff00" android:text="2"/> <TextView android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="3" android:gravity="center" android:background="#440000ff" android:text="2"/> </LinearLayout>預期效果應該是:
實際效果是:
為了達到預期效果,應該設定父佈局的
android:baselineAligned="false"
即:
這樣就可以達到預期效果了
總結:凡是以 "layout_"開頭的屬性都是由父控制元件去設定的屬性,eg :layout_gravity:子控制元件相對父控制元件,gravity:子控制元件自身內容的相對位置