Android 布局学习之——Layout(布局)详解二(常见布局和布局参数) -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    Layout Parameters(布局参数):

    在XML文件中,我们经常会看到类似于layout_width这样的布局属性(layout attributes),这些属性通常是用来定义

    View的布局参数,为了让它适应于ViewGroup,

Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

    每个ViewGroup类都实现了一个继承自ViewGroup.LayoutParams的嵌套类。

    子类包含定义每个子View大小和位置的属性类型,为了让它适应于ViewGroup。

    下面我们通过官方文档的一张图片以及一个XML文件来具体学习一下:

    1

    2

    3  xmlns:tools="http://schemas.android.com/tools"

    4  android:layout_width="match_parent"

    5  android:layout_height="wrap_content"

    6  android:background="#0f0"

    7  android:orientation="vertical" >

    8  

    9  

    10   android:layout_width="wrap_content"

    11   android:layout_height="wrap_content"

    12   android:background="#f00"

    13   >

    14   

    15     android:id="@+id/textView1InRL"

    16     android:background="#fff"

    17     android:layout_width="wrap_content"

    18     android:layout_height="wrap_content"

    19     android:text="TextView" />

    20

    21  

    22    android:id="@+id/textView2InRL"

    23    android:background="#fff"

    24    android:layout_width="wrap_content"

    25    android:layout_height="wrap_content"

    26    android:text="TextView2"

    27    android:layout_toRightOf="@id/textView1InRL"

    28     />

    29   

    30    android:background="#fff"

    31    android:layout_width="wrap_content"

    32    android:layout_height="wrap_content"

    33    android:text="TextView3"

    34    android:layout_below="@id/textView2InRL"

    35     />

    36   

    37   

    38     android:text="Button1InLinearLayout"

    39     android:layout_width="wrap_content"

    40     android:layout_height="wrap_content"

    41     />

    42   

    43     android:text="Button2InLinearLayout"

    44     android:layout_width="wrap_content"

    45     android:layout_height="wrap_content"

    46     />

    47

    从上,我们可以看出。布局中的子元素都必须定义使他合适于它的父布局的布局参数,尽管它可能为它的子元素定义不同的布局参数。比如上图中的RelativeLayout,它受父Layout:LinearLayout影响,然后它的布局参数则影响到了它的子元素:三个TextView。

    常见的布局(Common Layouts):

    下面介绍Android中常用的布局:

    1.线性布局(Linear Layout)

    将子元素按垂直方向或水平方向线性排列。(如果窗口的长度超过了屏幕的长度,则可以生成一个滚动条)

    窗口长度超过屏幕长度,生成滚动条(srollbar)的方法:

    用ScrollView包裹线性布局:

    1

    2    android:layout_width="fill_parent"

    3    android:layout_height="fill_parent"

    4    xmlns:android="http://schemas.android.com/apk/res/android">

    5    

    6      android:layout_width="fill_parent"

    7      android:layout_height="wrap_content">

    8      

    9         android:layout_width="wrap_content"

    10         android:layout_height="wrap_content"

    11         android:orientation="vertical">

    12         

    13      

    14   

    15 

    通过一个例子来深入学习一下线性布局:

    1

    2  xmlns:tools="http://schemas.android.com/tools"

    3  android:layout_width="match_parent"

    4  android:layout_height="wrap_content"

    5  android:paddingLeft="20dp"

    6  android:paddingRight="20dp"

    7  android:orientation="vertical" >

    8  

    9    android:layout_width="fill_parent"

    10    android:layout_height="wrap_content"

    11    >

    12    

    13      android:layout_width="wrap_content"

    14      android:layout_height="wrap_content"

    15      android:orientation="vertical"

    16      >

    17  

    18    android:layout_width="match_parent"

    19    android:layout_height="wrap_content"

    20    android:hint="帐号:" />

    21  

    22    android:layout_width="match_parent"

    23    android:layout_height="wrap_content"

    24    android:hint="密码:" />

    25  

    26    android:layout_width="wrap_content"

    27    android:layout_height="wrap_content"

    28    android:orientation="horizontal"

    29    >

    30    

    31      android:layout_width="wrap_content"

    32      android:layout_height="wrap_content"

    33      android:layout_marginLeft="30dp"

    34      android:text="登录"

    35      />

    36     

    37      android:layout_width="wrap_content"

    38      android:layout_height="wrap_content"

    39      android:layout_marginLeft="100dp"

    40      android:text="注册"

    41      />

    42  

    43  

    44    android:layout_width="match_parent"

    45    android:layout_height="500dp"

    46    android:src="@drawable/ic_launcher"

    47    />

    48  

    49    android:layout_width="match_parent"

    50    android:layout_height="wrap_content"

    51    android:text="LinearLayout大小超过屏幕大小的测试"

    52    />

    53  

    54  

    55

    2.相关布局(Relative Layout)

    正如其名,相关布局,

电脑资料

Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)》(https://www.unjs.com)。我们可以通过让子元素互相相关(比如Button A在TextView B的下面)或与父布局互相相关来指定

    它们在布局中的位置。

    默认地,所有的子View都被放置在布局的左上方(top-left)。

    设置子View之间和子View与父母之间关系的参数如下图所示:

    同样通过一个例子来学习一下相关布局:

    1

    2  xmlns:tools="http://schemas.android.com/tools"

    3  android:layout_width="match_parent"

    4  android:layout_height="match_parent"

    5  tools:context=".MainActivity" >

    6

    7  

    8    

    9      android:id="@+id/login"

    10      android:layout_width="wrap_content"

    11      android:layout_height="wrap_content"

    12      android:layout_centerHorizontal="true"

    13      android:textSize="20sp"

    14      android:text="登录界面" />

    15   

    16  

    17    android:id="@+id/editText1"

    18    android:layout_width="wrap_content"

    19    android:layout_height="wrap_content"

    20    android:layout_below="@id/login"

    21    android:layout_centerHorizontal="true"

    22    android:layout_marginTop="24dp"

    23    android:hint="username"

    24    android:ems="10" >

    25

    26    

    27  

    28  

    29  

    30    android:id="@+id/editText2"

    31    android:layout_width="wrap_content"

    32    android:layout_height="wrap_content"

    33    android:layout_below="@+id/editText1"

    34    android:layout_centerHorizontal="true"

    35    android:layout_marginTop="27dp"

    36    android:ems="10"

    37    android:hint="password"

    38    android:inputType="textPassword" />

    39   

    41  

    42    android:id="@+id/cancelButton"

    43    android:layout_width="wrap_content"

    44    android:layout_height="wrap_content"

    45    android:layout_below="@id/editText2"

    46    android:layout_alignRight="@id/editText2"

    47    android:text="取消"

    48    />

    49    

    50    

    51    android:id="@+id/confirmButton"

    52    android:layout_width="wrap_content"

    53    android:layout_height="wrap_content"

    54    android:layout_below="@id/editText2"

    55    android:layout_toLeftOf="@id/cancelButton"

    56    android:text="确定"

    57    />

    58

    59

最新文章