Android学习笔记-----详解3种常用布局

Android学习笔记-----详解3种常用布局,第1张

概述文章目录1、LinearLayout2、用代码控制子对象3、RelativeLayout(相对布局)4、FrameLayout(作帧布局)1、LinearLayout(1)LinearLayout又称作线性布局,子对象水平排开或垂直排开;android:orientation属性可以设置是水平方向线性排开还是垂直方向水平排开;(2)android:layout_gravity属性

文章目录1、LinearLayout2、用代码控制子对象3、RelativeLayout(相对布局)4、FrameLayout(作帧布局)

1、linearLayout

(1)linearLayout又称作线性布局,子对象水平排开或垂直排开;
androID:orIEntation属性可以设置是水平方向线性排开还是垂直方向水平排开;
(2)androID:layout_gravity属性用于指定控件在布局中的对齐方式;它的可选值和androID:gravity(用于指定文字在控件中的对齐方式)差不多;需要注意的是,当linearLayout排列方向是horizontal时,只有垂直方向的对齐方向才有效,因为此时水平方向上的长度是不固定的,每添加一个控件,水平方向上的长度都会改变,因而无法指定该方向上的对齐方式;反之,同;
(3)androID:layout_weight比较有用的一个属性:比重
这个属性允许我们使用比例的方式来指定控件的大小,它在手机的适配性方面可以起到非常重要的作用;
比重:androID:layout_weight =“1”,分割父级容器的比例,不写比重这个属性表示不参与父级容器的分割,会以内容为主;

简单小例子:

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:orIEntation="vertical" androID:layout_wIDth="match_parent"    androID:layout_height="match_parent">    <linearLayout        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        androID:orIEntation="horizontal"        >        <EditText            androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:layout_weight="1"            />        <button            androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:text="前往"            />    </linearLayout>    <WebVIEw        androID:layout_weight="1"        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content"        /></linearLayout>

2、用代码控制子对象

用程序控制子对象的添加和删除
测试代码:

public class MainActivity extends AppCompatActivity implements VIEw.OnClickListener {    private linearLayout root;    private button btn;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        root = new linearLayout(this);//创建线性布局        root.setorIEntation(linearLayout.VERTICAL);//设置布局方式为垂直布局        setContentVIEw(root);        for(int i=0;i<10;i++) {            btn = new button(this);            btn.setText("remove me");            btn.setonClickListener(this);            //root.addVIEw(btn);            //root.addVIEw(btn,300,200);//把子对象添加进来            linearLayout.LayoutParams lp = new linearLayout.LayoutParams(linearLayout.LayoutParams.WRAP_CONTENT, linearLayout.LayoutParams.WRAP_CONTENT);            lp.weight = 1;//让其均匀分割父级容器            root.addVIEw(btn,lp);        }    }    @OverrIDe    public voID onClick(VIEw v) {        root.removeVIEw(v);    }}
3、relativeLayout(相对布局)

后添加的控件会叠在上面,button的优先级比较高;
它可以通过相对定位让控件出现在布局的任何位置,因此它的属性比较多;
控件可以相对于父布局来进行定位,也可以相对于控件来进行定位;
比如androID:layout_alignParentleft让控件和父布局的左上角对齐;
androID:layout_above属性可以让一个控件在另一个控件的上方;
androID:layout_alignleft属性表示让一个控件的左边缘和另一个控件的左边缘对齐;

4、FrameLayout(作帧布局)

能调整的位置非常有限,它的功能用relativeLayout是完全可以替代的,但相对于relativeLayout比较轻量级,速度快;
androID:layout_gravity可以来指定控件在属性中的对齐方式;由于定位方式的欠缺,FrameLayout应用场景相对少一些;

测试代码:
布局文件:

<FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:app="http://schemas.androID.com/apk/res-auto"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:ID="@+ID/root"    tools:context=".FrameLayoutAty">    <ImageVIEw        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent"        androID:src="@drawable/img1"        androID:ID="@+ID/ivA"        />    <ImageVIEw        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent"        androID:src="@drawable/img2"        androID:visibility="invisible"        androID:ID="@+ID/ivB"        />

java类文件:

public class FrameLayoutAty extends AppCompatActivity {    private FrameLayout fl;    private ImageVIEw ivA,ivB;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_frame_layout_aty);        fl = (FrameLayout) findVIEwByID(R.ID.root);        ivA = findVIEwByID(R.ID.ivA);        ivB = findVIEwByID(R.ID.ivB);        showA();        fl.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                if(ivA.getVisibility()==VIEw.VISIBLE){                    showB();                }else {                    showA();                }            }        });    }    public voID showA(){        ivA.setVisibility(VIEw.VISIBLE);        ivB.setVisibility(VIEw.INVISIBLE);    }    public voID showB(){        ivB.setVisibility(VIEw.VISIBLE);        ivA.setVisibility(VIEw.INVISIBLE);    }}
总结

以上是内存溢出为你收集整理的Android学习笔记-----详解3种常用布局全部内容,希望文章能够帮你解决Android学习笔记-----详解3种常用布局所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1058162.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存