Android布局相关

LinearLayout

  • vertical 垂直排列
  • horizontal 水平排列
  • match_parent 控件的宽度或高度会填满其所在的父控件
  • wrap_content 控件大小由内容决定
  • gravity
    • android:gravity 可以不考虑当前布局的方向
    • android:layout_gravity 需要考虑当前布局的方向
    • center_horizontal|center_vertical 水平居中,竖直居中

权重布局WeightLayout

  • match_parent
    • 被设置weight值的控件,宽度应为该控件的原宽度+父控件的剩余空间*比例
      • 水平方向的线性布局中:使用weight时,需要将宽度设置为0dp
      • 垂直方向的线性布局中:使用weight时,需要将高度设置为0dp
    • first的宽度:match_parent(原宽度)+(match_parent-(match_parent+match_parent))*1/3设,match_parent为a
    • first的宽度:a+(a-2a)*1/3 = 2/3a
    • first的宽度为父控件2/3,即占父控件的2/3份
    • second的宽度:a+(a-2a)*2/3 = 1/3a
    • second的宽度为父控件1/3,即占父控件的1/3份
  • Demo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<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="wrap_content"
android:orientation="horizontal"
android:background="#00ffff"
tools:context="net.bj.talker.talktest.WeightActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="first"
android:layout_weight="1"
android:background="#00ff00"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="second"
android:layout_weight="1"
android:background="#0000ff"
/>
</LinearLayout>
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×