Android开发基础——布局笔记

#布局笔记
##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
  6. 所有的控件都会默认摆放在布局的左上角
  7. 在帧布局中定义的控件每一个都是以画面的形式进行呈现
  8. 最开始定义的控件出现在最下方,最后定义的控件出现在最上方(表面)
  9. 位置:可通过layout_gravity=""对位置进行修改,也可以用margin

应用:

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

##5.绝对布局:
###AbsoluteLayout

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

使用android:layout_y属性确定Y坐标,以左上角为顶点。
4. 如果子元素不设置和那么它们的默认值是0,会出现在左上角。
5. 由于手机屏幕尺寸差别较大,使用绝对定位的适应性会比较差,不推荐使用

##6.网格布局:
###GridLayout
网格布局:在4.0之后出现的布局,

  1. columnCount:存在多少列

  2. RowCount:存在多少行

  3. layout_rowSpan:占据多少行

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

  5. TableLayout定义TableRow来呈现内容

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

  7. 表格布局中只能合并列不能合并行,但是在网格布局中国既能和并列也能合并行
    ##6. 百分比布局:
    ###PercentFrameLayout PercentRelativeLayout
    使用前:在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%”
    ##7. 引入布局:
    先在布局中建一个title.xml,再在activity_main.xml中引用:

用法:

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

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

##8. 自定义控件:
创建一个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"/>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值