(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属性表示让一个控件的左边缘和另一个控件的左边缘对齐;
能调整的位置非常有限,它的功能用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种常用布局所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)