美文网首页Android开发Android知识Android技术知识
入门Android必须知道的三大布局

入门Android必须知道的三大布局

作者: uniapp | 来源:发表于2018-01-02 19:36 被阅读0次

    学习新技能,循序渐进、由易入难是最好的方式。移动端开发中,最简单的莫过于界面布局。�开发中使用最多的三种布局是:线性布局LinearLayout、相对布局RelativeLayout和帧布局FrameLayout。以上三种布局基本能�解决Android开发中90%以上的界面。下面看一下它们的实现方式。

    LinearLayout

    LinearLayout是在父布局中把所有的子控件按线性排列,有按行和列两种排列方式。先看效果:


    LinearLayout

    具体设置代码如下,其中的背景@color/colorMine是在全局文件res/values/colors.xml中定义的。

    <!--<线性布局:vertical>-->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="fill_parent"
                  android:layout_height="200dp"
                  android:layout_alignParentBottom="true"
                  android:gravity="center_vertical"
                  android:orientation="vertical"
        android:weightSum="3">
    
        <Button
            android:id="@+id/button_left"
            android:text="button_left"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:textColor="#000000"
            android:background="@color/colorMine"
            />
        <Button
            android:id="@+id/button_center"
            android:text="button_center"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:textColor="#000000"
            />
        <Button
            android:id="@+id/button_right"
            android:text="button_right"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:textColor="#000000"
            android:background="@color/colorMine"
            />
    
    </LinearLayout>
    

    上图将线性布局的父视图的gravity属性设置为vertical,按行排列。每个控件都单独占一行。但是很明显发现中间的Button布局有间隙,这是因为没有设置背景的原因。添加背景后,我们能看到如下图正确的效果。


    LinearLayout
    RelativeLayout

    RelativeLayout布局中,子控件采用相互参照的方式确定自身的位置。可以采用相对于父控件或者其他子控件的方式,使用方式较灵活。实际效果如下:


    RelativeLayout

    再具体代码中,可以很明显的看出相对于父控件的关键字中一般带有Parent, 相对于子空间的关键字多以to开头。

    <RelativeLayout android:layout_height="match_parent"
                    android:layout_width="match_parent"
                    xmlns:android="http://schemas.android.com/apk/res/android">
    
        <android.support.v7.widget.AppCompatTextView
            android:id="@+id/textLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="左上角"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            />
        <android.support.v7.widget.AppCompatTextView
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="右上角"
            android:layout_toRightOf="@+id/textLeft"
            android:background="@color/colorMine"
            android:layout_alignParentTop="true"
            />
    
        <android.support.v7.widget.AppCompatTextView
            android:id="@+id/centerText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="中间"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:background="@color/colorMine"
            />
    
        <android.support.v7.widget.AppCompatTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="左下角"
            android:layout_toLeftOf="@+id/centerText"
            android:layout_below="@+id/centerText"
            />
    
        <android.support.v7.widget.AppCompatTextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="右下角"
            android:layout_toRightOf="@+id/centerText"
            android:layout_below="@+id/centerText"
            />
    </RelativeLayout>
    
    FrameLayout

    FrameLayout中子控件开始全部堆砌在父视图的左上角,通过设置子控件的属性gravity来调整位置。效果和代码如下:

    FrameLayout
    <FrameLayout android:layout_height="match_parent"
                 android:layout_width="match_parent"
                 xmlns:android="http://schemas.android.com/apk/res/android">
        <Button
            android:id="@+id/fra_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="One Button"
            android:background="@color/colorMine"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Text View"
            android:background="@color/colorMine"
            android:layout_gravity="right"/>
    </FrameLayout>
    

    除了上述三种布局,Android中还有绝对布局、网格布局和表格布局。但是它们使用较少,将有限的精力放在常用的知识点上面是明智的选择。三大布局使用方式有不同的特点,具体选择需要基于具体页面分析。熟练掌握使用方式是Android入门必不可少的一步,希望能帮助到入门的同路人。

    关注和喜欢都是对我的鼓励和支持~

    相关文章

      网友评论

        本文标题:入门Android必须知道的三大布局

        本文链接:https://www.haomeiwen.com/subject/rekwgxtx.html