Android五大布局属性解析

五大布局

通用属性

paddingBottom	内容与本控件底部的距离
paddingLeft					左
paddingRight				右
paddingTop					顶
padding						外

LinearLayout(线性布局)

orientation			方向
gravity				本控件中内容居中
layout_gravity		本控件在父控件中居中
layout_weight		权重
visibility			是否可见

RelativeLayout(相对布局)

相对于父组件

layout_alignParentTop 		与父控件顶部对其
layout_alignParentBottom 			底部
layout_alignParentLeft 				左边
layout_alignParentRight 			右边
layout_alignParentStart
layout_alignParentEnd

layout_marginTop 			与其他控件上边缘距离
layout_marginBottom 				  下
layout_marginLeft					  左
layout_marginRight					  右

layout_centerHorizontal  	水平居中
layout_centerVertical  		垂直居中
layout_centerInParent 		正中

相对于其他组件(指定id)

layout_above 			本控件底部与给定ID控件顶部对其
layout_below  				  顶			  底	  
layout_toLeftOf  			  右			  左
layout_toRightOf 			  左			  右
layout_alignBaseline 		  baseLine	    baseLine
layout_alignTop 			  顶			  顶
layout_alignBottom  		  底              底
layout_alignLeft 			  左			  左
layout_alignRight  			  右			  右

FrameLayout(帧布局)

TableLayout(表格布局)GridLayout 网格布局

AbsoluteLayout(绝对布局)

ConstaintLayout(约束布局)

AS:Android Studio 2.2及以上
安装:Android SDK -> SDK Tools -> Support Repository中的ConstrainLayout for Android和Solver for ConstaintLayout
​ build.gradle中添加 compile ‘com.android.support.constraint:constraint-layout:1.0.0-beta4’

可能优化布局

​ Android Lint(工具)
​ 使用组合控件
​ 合并作为根节点的帧布局(Framelayout)
​ 无用的叶子节点
​ 无用的父节点
​ 过深的布局层次

问题

Android 5.0及以上,Relativelayout布局中Button始终在顶层无法被覆盖?
原因:Android5.0推出的stateListAnimator属性,其用来实现控件在点击时产生不同的交互。对于Button控件,点击时默认有个阴影的效果用于表示按下的状态(5.0以前就是简单的变色)。
解决方法
​ 1、自定义样式中设置android:stateListAnimator=”@null”,去掉阴影效果而使Button可以被正常的覆盖
​ 2、如希望Button的阴影效果和被覆盖都能实现,可以使用两个单独的Linearlayout对Button进行包裹,同时给Button的下方和左右侧留出空余,如下面所示

<LinearLayout
	android:layout_width="match_parent"
	android:layout_height="100dp">

	<Button         
		android:layout_width="match_parent"
		android:layout_height="50dp"
		android:layout_marginLeft="10dp"
		android:layout_marginRight="10dp"
		android:text="@string/app_name"/>
LinearLayout>

你可能感兴趣的:(Android系统组件与控件,Android基础)