美文网首页
【Android】布局笔记

【Android】布局笔记

作者: 感同身受_ | 来源:发表于2019-05-17 22:23 被阅读0次

    #布局笔记

    1. 线性布局:

    LinearLayout:

    1. layout_gravity:和gravity不同的是,gravity是用于指定文字在控件中的对齐方式;layout_gravity用于指定控件在布局中的对齐方式
    2. weight:
      (权重):每个控件所占的比例

    LinearLayout特有的属性它表示比重的意思,可实现百分比布局

    如果控件为“match_parent”,则layout_weight的值与占用比重是反相关的,其值越大,它占用的比重越小。

    如果控件为"wrap_content",则对比重的判断会变为正相关,即其值越小,占用的空间越少

    一个页面中,有一个有权重的的控件和一个无权重的控件,系统会先给无权重的控件分配空间。

    2. 相对布局:

    RelativeLayout:

    相对于父布局进行定位:

    1. layout_alignParentRight

    2. layout_alignParentLeft

    3. layout_alignParentTop

    4. layout_alignParentBottom

    5. layout_centerInParent

    6. layout_centerVertical:垂直居中

    7. layout_centerHorizontal:水平居中

    8. layout_centerInParent:父类居中
      相对于控件进行定位:

    9. layout_centerInParent="true"

    10. layout_above="@id/button"

    11. layout_below="@id/button"

    12. layout_toLeftOf="@id/button"

    13. layout_toRightOf="@id/button"

    【注】

    相对布局:按照控件之间的相互位置进行排布。存在一个参照物的概念一般来说再相对布局重的空间都会存在id的属性

    centerInparent:位于父类的中部

    alignParentRight :对齐父类的右方,其中方向性的单词可以更换

    toRightOf:在某个控件的右方,方向性的单词可以更换

    alignBottom:底部对齐

    alignRight:右部对齐,

    @+id:表示的是系统中本来不存在对应的id值,需要将这个主d值诗加到系统当中,

    @id,表示从系统中去除已经填加好的id

    alignBaseLine:基准线对开,

    针对相对布局而言,一般都不会过多的给定很多相关联的属性,否则模合性就会大大增加,

    3.表格布局:

    TableLayout是继承子LinearLayout的(可以不指定宽和高,系统会自动给定)

    1. TableRow:表示一行
    2. 可以使用layout_weight对每一列的权重进行分配(因为继承了LinearLayout)
    3. stretchColumns:拉伸某一列。让布局显得不紧凑(参数为0,1,2,3...)
    4. shrinkColumns:回缩某一列。让整体的内容都得以实现。(参数为0,1,2,3...)
    5. collapseColumns:隐藏某一列(参数为0,1,2,3...)

    4. 帧布局:

    frameLayout

    1. 所有的控件都会默认摆放在布局的左上角
    2. 在帧布局中定义的控件每一个都是以画面的形式进行呈现
    3. 最开始定义的控件出现在最下方,最后定义的控件出现在最上方(表面)
    4. 位置:可通过layout_gravity=""对位置进行修改,也可以用margin

    应用:

    1. 帧布局可以使用手机联系人的导航显示上字母的呈现。
    2. 帧布局使用在帧动画。

    5.绝对布局:

    AbsoluteLayout

    1. AbsoluteLayout又可以叫做坐标布局,可以直接指定子元素的绝对位置
    2. 这种布局简单直接,直观性强
    3. 使用android:layout_x属性来确定X坐标,以左上角为顶点。

    使用android:layout_y属性确定Y坐标,以左上角为顶点。

    1. 如果子元素不设置和那么它们的默认值是0,会出现在左上角。
    2. 由于手机屏幕尺寸差别较大,使用绝对定位的适应性会比较差,不推荐使用

    6.网格布局:

    GridLayout

    网格布局:在4.0之后出现的布局,

    1. columnCount:存在多少列

    2. RowCount:存在多少行

    3. layout_rowSpan:占据多少行

    4. layout_columnSpan占据多少列
      【注】GridLayout和TableLayout有什么不同?

    5. TableLayout定义TableRow来呈现内容

    6. GridLayout中可以定义控件来直接使用,

    7. 表格布局中只能合并列不能合并行,但是在网格布局中既能和并列也能合并行

    7. 百分比布局:

    PercentFrameLayout

    使用前:在app/build.gradle文件,dependencies闭包中添加:

    implementation com.android.support:percent:28.2.1

    【注】每当修改gradle文件后,需要点击Sync Now对代码进行同步。

    用法:

    1. app:layout_widthPercent="50%"
    2. app:layout_heightPercent="50%"

    8. 引入布局:

    先在布局中建一个title.xml,再在activity_main.xml中引用:

    用法:

    <include layout="@layout/title"/>

    ActionBar actionBar = getSupportActionBar();
    if(actionBar != null){
        actionBar.hide();
    }
    

    9. 自定义控件:

    创建一个TitleLayout继承LinearLayout

    public class TitleLayout extends LinearLayout {
        public TitleLayout(Context context, AttributeSet attrs){
            super(context,attrs);
            //LayoutInflater.from  构建出一个LayoutInflater对象,后调用inflate动态加载一个布局文件
            LayoutInflater.from(context).inflate(R.layout.title,this);
            Button titleBack = findViewById(R.id.title_back);
            Button titleEdit = findViewById(R.id.title_edit);
            titleBack.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    ((Activity)getContext()).finish();
                }
            });
            titleEdit.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(getContext(),"You clicked Edit button",Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
    

    在activity_main.xml中添加这个自定义控件:

    //此项目名为uicustomviews
    <com.example.uicustomviews.TitleLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    
    

    相关文章

      网友评论

          本文标题:【Android】布局笔记

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