android 学习Layout布局的使用

 android 常用布局

LinearLayout(线性布局)       线性的           垂直的   水平的RelativeLaytout(相对布局)    最灵活的TableLayout(表格布局)       使用GridView代替AbsoluteLayout(绝对布局)    最好不要使用 绝对坐标Framelayout(帧布局)      布局叠加时使用  比如视频缓冲的环形滚动条
使用频次Absolute<Table<Frame<Linear<Relative
android布局原则(1)尽量多的使用线性布局和相对布局不要使用绝对布局(2)在布局层次一样的情况下,建议使用线性布局代替相对布局因为线性布局性能稍高一点(3)将可复用的组件抽取出来,并通过include标签使用(4)使用viewstub标签加载一些不常用的布局 (暂时不使用的)(5)使用merge标签减少标签的嵌套层次

<include/>的使用作用:将公用的组件抽取出来单独一个xml文件,然后使用include标签导入公共布局效果:提高ui的制作和复用效率通过findViewById 也可以找到view  因为通过include实际上是将自布局直接包含进公共布局当中

1,子布局title.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="30dp"
    android:background="#243821">
</LinearLayout>

  2,主布局main.xml

<LinearLayout
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical">
    <include layout="@layout/title"
        ></include>
</LinearLayout>


使用merge合并ui布局作用:合并ui布局,使用该布局能降低ui布局的嵌套层次场景1;布局根节点是FrameLayout且不需要设置backgroud和padding等属性,可以用merge代替场景2:某布局作为自布局被其他布局include时,使用merge当做该布局的顶接点,这样再被引入时,顶接点会自动被忽略1,子布局progress.xml
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progress"
        android:layout_gravity="center"/>
</merge>

  2,主布局main.xml

<LinearLayout
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical">
    <include layout="@layout/title"
        ></include>

    <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

        <include layout="@layout/progress"/>
    </FrameLayout>
</LinearLayout>


使用viewstub惰性加载作用:viewstub标签同incude标签一样可以用来引入一个外部的布局,不同的是viewstub引入的布局默认不会扩张,既不会占用显示也不会占用位置,从而在解析laytou时,节省cpu和内存1,子布局common.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" android:layout_height="wrap_content">

    <TextView
        android:id="@+id/text"
        android:text="viewstub"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

  2,主布局main.xml

<LinearLayout
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical">
    <include layout="@layout/title"
        ></include>

    <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

        <include layout="@layout/progress"/>
    </FrameLayout>
    <Button android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btn"
        android:text="按钮"
        />
    <ViewStub
        android:id="@+id/viewStub"
        android:layout="@layout/common"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

  3,MainActivity

public class MainActivity extends Activity {

    private Button btn ;
    private ViewStub viewStub;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button)findViewById(R.id.btn);
        viewStub = (ViewStub)findViewById(R.id.viewStub);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewStub.inflate();
            }
        });
    }
}
 
  
 
 
时间: 2024-12-14 18:11:54

android 学习Layout布局的使用的相关文章

Android学习5&mdash;布局简介

Android界面的布局主要有四种,分别为RelativeLayout.LinearLayout.TableLayout.FrameLayout,接下来分别介绍这些布局如何使用(为了简单起见,接下来的介绍工作中,我分别附上布局文件的代码以及效果图,供大家参考) 一:RelativeLayout <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="htt

14.Android之Layout布局学习

Android布局主要有5种,接下来学习总结下. 1) 最常见的线性布局 LinearLayout 线性布局是Android布局中最简单的布局,也是最常用,最实用的布局. android:orientation线形布局的对齐方式 : vertical(垂直) 和 horizontal(水平) LayoutParams中的特殊参数: layout_weight 权值 layout_gravity 相对于父元素的重力值(默认top|left): (top|bottom|left|right|cent

android 学习 之 布局(上)

学习安卓布局前,先了解三个属性值: 1.fill_parent: 设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间 2.match_parent: Android2.2中match_parent和fill_parent是一个意思 .两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用.那么如果考虑低版本的使用情况你就需要用fill_parent了 3.wrap_content:         设置一个视图的尺寸为wrap

Android ch06 Layout 布局(一)

LinearLayout:线性布局 LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列, 按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失. 因此一个垂直列表的每一行只会有一个widget或者是container,而不管他们有多宽, 而一个水平列表将会只有一个行高(高度为最高子控件的高度加上边框高度). LinearLayout保持其所包含的widget或者是container之间的间隔以及互相对齐(相对一个控件的

Android学习之布局

Android常见的五大布局: 1.LinearLayout;水平或垂直布局 2.FrameLayout;从屏幕左上方布局 3.TableLayout;行列布局 4.RelativeLayout;相对其他组件布局 5.AbsoluteLayout;绝对坐标布局 源码下载链接:Android布局 效果图: MainActivity: LinearActivity: FrameActivity: TableActivity: RelativeLayout: "线性"按钮实现跳转部分代码,其

android学习code3 布局上

andriod系统是一个基于事件驱动行为一种系统andirod添加事件驱动有四种方式 第一种自定义一个内部类实现OnclickListenerprivate class MyListenner implements OnclickListener{ public void OnClick(View w){   } }然后onCreate 方法 调用Button dail=(Button)this.findByViewId(R.Id.et_numer);dail.setOnClickListnen

Android学习笔记-----------布局(四)

GridLayout(网格布局) 网格布局是android4.0之后出现的新布局,在使用可能会报错,需要将清单文件中的android:minSdkVersion设置为14 网格布局和LinerLayout一样具有水平方向和垂直方向两种布局方式.当控件排满后会自动换行或者换列. 使用前需要先指定rowCount(行数),columnCount(列数) 通过组件的layout_row和layout_column属性指定控件的行号和列号,这里要注意索引是从0开始的 通过组件的layout_column

Android学习——LinearLayout布局实现居中、左对齐、右对齐

android:orientation="vertical"表示该布局下的元素垂直排列: 在整体垂直排列的基础上想要实现内部水平排列,则在整体LinearLayout布局下再创建一个LinearLayout布局. 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/r

Android学习笔记-----------布局(一)

LinearLayout(线性布局) 线性布局是android开发中的常用布局. 通过设置android:orientation属性来确定线性布局的方向,vertical为垂直方向,horizontal为水平方向. 由于布局的默认对齐方式是左上,若想设置控件的对齐方式,可以通过设置android:gravity属性和android:layout_gravity属性来确定控件的对齐方式. android:gravity属性是设置本元素中的子元素相对于它的对齐方式. android:layout_g