Android 中的四种基本布局

原创 2015年11月20日 16:44:17
LinearLayout
LinearLayout 又称作线性布局,是一种非常常用的布局。正如它的名字所秒速的一样,这个布局会将它所包含的控件在线性方向上依次排列。

这里注意的是:如果LinearLayout的排列方向是horizontal,内部的控件就绝对不能将宽度指定为match_parent,因为这样的话单独一个控件就会将整个水平方向占满,其他的控件就没有可放置的位置了。同样的道理,如果LinearLayout的排列方向是Vertical,内部的控件就不能将高度指定为match_parent.


android:gravity 是用于指定文字在控件中的对齐方式,而 android:layout_gravity 是用于指定控件在布局中的对齐方式
android:layout_gravity 的可选值和android:gravity 差不多
当LinearLayout的排列方向是horizontal时,只有垂直方向上的对齐方式才会生效,因为此时水平方向上的长度是不固定的,每添加一个控件,水平方向上的长度都会改变,因而无法指定该方向上的对齐方式。同样的道理,当LinearLayout的排列方向是Vertical时,只有水平方向的对齐方式才会生效。


android:layout_weight:

允许我们使用比例的方式来指定控件的大小,它在手机屏幕的适配性方面可以起到非常重要
的作用。


RelativeLayout
相对布局

相对于父布局定位:
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:layout_alignParentBottom="true"

相对于一个控件定位:
android:layout_above:可以让一个控件位于另一个控件的上方
android:layout_below:可以让一个控件位于另一个控件的下方
android:layout_toLeftOf:可以让一个控件位于另一个控件的左侧
android:layout_toRightOf:可以让一个控件位于另一个控件的右侧


注意,当一个控件去引用另一个控件的 id 时,该控件一定要定义在引用控件的后
面,不然会出现找不到 id 的情况。


另外一组相对于控件进行定位的属性:
android:layout_alignLeft:表示让一个控件的左边缘和另一个控件的左边缘对齐
android:layout_alignRight:表示让一个控件的右边缘和另一个控件的右边缘对齐
android:layout_alignTop:表示让一个控件的顶部边缘和另一个控件的顶部边缘对齐
android:layout_alignBottom:表示让一个控件的底部边缘和另一个控件的底部边缘对齐


FrameLayout
FrameLayout没有任何的定位方式,所有的控件都会摆放在布局的左上角。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
/>
<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
/>
</FrameLayout>





TableLayout
这种布局不是很常用。
activity_main.xml 中的代码改成如下所示:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >119
<TableRow>
<TextView
android:layout_height="wrap_content"
android:text="Account:" />
<EditText
android:id="@+id/account"
android:layout_height="wrap_content"
android:hint="Input your account" />
</TableRow>
<TableRow>
<TextView
android:layout_height="wrap_content"
android:text="Password:" />
<EditText
android:id="@+id/password"
android:layout_height="wrap_content"
android:inputType="textPassword" />
</TableRow>
<TableRow>
<Button
android:id="@+id/login"
android:layout_height="wrap_content"
android:layout_span="2"                            //将两列合并成一列
android:text="Login" />
</TableRow>
</TableLayout>


注意:每加入一个 TableRow就表示在表格中添加了一行,然后在TableRow中每加入一个控件,就表示在该行中加入了一列,TableRow 中的控件是不能指定宽度的


解决方法:android:stretchColumns




自定义控件
控件的布局结构




所用的所有控件都是直接或间接继承自 View。
所有布局都是直接或间接继承自 ViewGroup。


View Android 中一种最基本的 UI 组件,它可以在屏幕
上绘制一块矩形区域,并能响应这块区域的各种事件,因此,我们使用的各种控件其实就是View 的基础之上又添加了各自特有的功能

ViewGroup 则是一种特殊的View,它可以包含很多的子 View 和子ViewGroup ,是一个用于放置控件和布局的容器。


android:layout_margin:这个属性,可以指定控件在上下左右方向上偏移的距离。
android:layout_marginLeft或android:layout_marginTop等属性来单独指定控件在某个方向上的距离


例子1: 创建带有返回键和编辑键的标题栏
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bg" >
<Button
android:id="@+id/title_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dip"
android:background="@drawable/back_bg"
android:text="Back"
android:textColor="#fff" />
<TextView
android:id="@+id/title_text"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:text="Title Text"
android:textColor="#fff"
android:textSize="24sp" />
<Button
android:id="@+id/title_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dip"
android:background="@drawable/edit_bg"
android:text="Edit"
android:textColor="#fff" />
</LinearLayout>


然后在每一个布局添加标题栏:
<include layout="@layout/title" />


创建自定义控件:
1.新建TitleLayout 继承LinearLayout
public class TitleLayout extends LinearLayout {
public TitleLayout(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.title, this);
}
}

然后我们需要在布局文件中添加这个自定义控件,修改
activity_main.xml 中的代码,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.example.uicustomviews.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
></com.example.uicustomviews.TitleLayout>
</LinearLayout>
版权声明:本文为博主原创文章,未经博主允许不得转载。

详解Android四种基本布局

LinearLayout LinearLayout 又称作线性布局,是一种非常常用的布局。 该布局有一个专属属性android:orientation,这个属性有两个选择vertical和horiz...
  • u014492609
  • u014492609
  • 2015年11月21日 20:30
  • 1536

android学习六(android中四种基本布局)

android的基本布局方式
  • wj903829182
  • wj903829182
  • 2014年11月01日 17:03
  • 2324

app-android中常见的四种布局

android中常见的四种布局 常见的布局有四种:         LinearLayout        线性布局        子元素任意         TableLayout  ...
  • liuxd3000
  • liuxd3000
  • 2014年11月06日 11:47
  • 2867

[android]_[四种基本布局]

1.LinearLayout LinearLayout 又称作线性布局,是一种非常常用的布局。正如它名字所描述的一样,这个布局会将它所包含的控件在线性方向上依次排列。相信你之前也已经注意到了,我们在上...
  • yepeng2014
  • yepeng2014
  • 2015年12月28日 00:58
  • 380

【Android】四种基本布局

1、LinearLayout 线性布局 android:orientation="vertival / horizontal" 分为垂直和水平两个方向单向排列布局内的控件  android:layou...
  • aidetiyan
  • aidetiyan
  • 2016年05月21日 11:03
  • 101

Android——四种基本布局

1.线性布局LinearLayout
  • qq_33548747
  • qq_33548747
  • 2016年08月09日 12:28
  • 269

Android四种基本布局

一、LinearLayoutorientation取值 vertical:垂直 horizontal:水平
  • mrosrry
  • mrosrry
  • 2015年05月25日 21:19
  • 83

android学习-动画(基本的四种动画)

先看段关于android中动画配置文件的伪代码: 现在来慢慢理清楚: xmlns:andr...
  • Main_Stage
  • Main_Stage
  • 2013年07月24日 11:47
  • 2521

Android学习之常见的布局方式

第一种:相对布局        相对布局:即相对于一个参照物的位置,那么必须先有参照物,才能确定接下来的控件的位置,例如先有A,然后B相对于A,在A的右边、下边或者什么位置。当然android中也可以...
  • hanmengaidudu
  • hanmengaidudu
  • 2013年12月08日 23:21
  • 4198

Android, 四种基本布局

1.LinearLayout android:orientation="vertical"垂直线性布局,"horizontal"水平线性布局 android:gravity="top"(butt...
  • sinat_30418389
  • sinat_30418389
  • 2015年09月15日 19:45
  • 158
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 中的四种基本布局
举报原因:
原因补充:

(最多只允许输入30个字)