Android_Layout_xml布局
1.构建xml布局文件
使用android提供的xml布局,可以快速构建UI界面,每个xml文件必须包含一个根元素,该xml文件位于res/layout/目录中。例如:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>
2.加载xml布局文件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载xml布局文件应该位于首行
setContentView(R.layout.activity_main);
}
3.属性ID
(1).xml中添加ID属性
android:id="@+id/button"(2).xml中引用ID
android:id="@id/button"(3).得到控件对象
Button myButton = (Button) findViewById(R.id.button);
4.布局的宽与高属性
所有视图都应该指定layout_width 与 layout_height属性,对该属性的描述主要有2个值
wrap_content根据控件内容的大小来定义当前控件整体大小
match_parent填满父类允许填满的空间位置,在 API Level 8之前使用fill_parent
一般在指定宽高时,推荐使用dp,而不是pixels。因为在不同的尺寸屏幕手机上,dp有更好的展示效果.
在LinearLayout布局中,假设定义了android:orientation="horizontal",且使用了android:layout_weight来表示子类控件的权重,此时子类控件推荐使用layout_width="0dp",子类控件将根据权重大小等比宽度;如果子类控件使用了layout_width="match_parent",将根据权重等比缩小。同样竖直方位也是如此!
5.layout_gravity与gravity
layout_gravity即设置当前视图相对于父类的位置摆放,gravity即控制当前视图的子类相对于父类的位置摆放。但有时layout_gravity不会起作用,原因很简单,就是忽略了父类的方位布局!
比如父类布局设置了android:orientation="vertical",而其子类有个button按钮,设置了android:layout_gravity="center_vertical",不会有任何效果,因为button遵循竖直排布,但只有水平方向的移动才会有效果!
因此,父类布局为vertical时,在设置layout_gravity时,只能控制水平方向的移动;在父类布局为horizontal时,在设置layout_gravity时,只能控制竖直方向的移动!而layout_gravity="center"即为可能有效果的那个方位居中!
6.margin与padding
margin主要控制当前视图相对于父类视图相间的位置距离大小
padding,比如一个Button按钮,text="Bt";如果指定了android:paddingLeft="30dp",意为Bt距离当前控件的左边为30dp大小
7.常见布局
(1).LinearLayout
LinearLayout为一个视图组,所有子类按照一单方向排列,必须指定android:orientation属性,该值为horizontal或者vertical,当使用子类控件使用权重layout_weight时,宽或者高推荐使用0dp
(2).RelativeLayout
RelativeLayout一个布局相对于另一个视图的位置,在上下左右或者相对于父类等等
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp" > <EditText
android:id="@+id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/reminder" /> <Spinner
android:id="@+id/dates"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@id/name"
android:layout_toLeftOf="@+id/times" /> <Spinner
android:id="@id/times"
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/name" /> <Button
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/times"
android:text="@string/done" /> </RelativeLayout>
Android_Layout_xml布局的更多相关文章
- 前端框架 EasyUI (2)页面布局 Layout
在 Web 程序中,页面布局对应用程序的用户体验至关重要. 在一般的信息管理类的 Web 应用程序中,页面结构通常有一个主工作区,然后在工作区上下左右靠近边界的区域设置一些边栏,用于显示信息或放置一些 ...
- TODO:Laravel 使用blade标签布局页面
TODO:Laravel 使用blade标签布局页面 本文主要介绍Laravel的标签使用,统一布局页面.主要用到到标签有@yield,@ stack,@extends,@section,@stop, ...
- CSS HTML元素布局及Display属性
本篇文章主要介绍HTML的内联元素.块级元素的分类与布局,以及dispaly属性对布局的影响. 目录 1. HTML 元素分类:介绍内联元素.块级元素的分类. 2. HTML 元素布局:介绍内联元素. ...
- 谈谈一些有趣的CSS题目(六)-- 全兼容的多列均匀布局问题
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- Xamarin+Prism开发详解五:页面布局基础知识
说实在的研究Xamarin到现在,自己就没设计出一款好的UI,基本都在研究后台逻辑之类的!作为Xamarin爱好者,一些简单的页面布局知识还是必备的. 布局常见标签: StackLayout Abso ...
- 界面设计技法之css布局
css布局之于页面就如同ECMAScript之于JS一般,细想一番,html就如同语文,css就如同数学,js呢,就是物理,有些扯远,这里就先不展开了. 回到主题,从最开始的css到如今的sass(l ...
- Android如何制作漂亮的自适布局的键盘
最近做了个自定义键盘,但面对不同分辨率的机型其中数字键盘不能根据界面大小自已铺满,但又不能每种机型都做一套吧,所以要做成自适应,那这里主讲思路. 这里最上面的titlebar高度固定,下面输入的金额高 ...
- 页面布局class常见命名规范
头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:left rig ...
- Flex 布局教程:语法篇
作者: 阮一峰 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便 ...
随机推荐
- java Socket 使用注意
Socket s = new Socket(ia, port); BufferedOutputStream bufOut = new BufferedOutputStream(s.getOutputS ...
- IOS MVC
简单的理解: V对M是不能通讯的. C对M通讯:API M对C通讯:Notification,KVO C对V通讯:Outlet V对C通讯:Target-action, Delegate,Dataso ...
- Android设置背景
一.设置图片背景 首先你先将一个的背景图片存入工程中res/drawble(当然drawble-hdpi.drawble-mdpi.drawble-ldpi中一个或者几个文件夹都可)文件夹中.假如我存 ...
- Tomcat地址栏传中文参数乱码问题处理
javascript中有时需要向后台传递中文参数,再次展示到前台时显示为乱码,解决方案: 方案1:修改Tomcat-conf-server.xml文件 大约69-71行 修改为: <Conne ...
- Arrays.copyof
public static int[] copyOf(int[] original, int newLength) { int[] copy = new int[newLength]; System. ...
- c#中的数据类型简介(委托)
c#中的数据类型简介(委托) 什么是委托? 委托是一种类型,它封装了一类方法,这些方法具有相同的方法签名(signature).定义听起来有点拗口,首先可以确定委托是一种数据类型,那么什么是方法签名, ...
- 如何让你的SQL运行得更快
人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS ...
- thinkPHP入门 一
简介 ThinkPHP是一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开 ...
- HDU 2653 - Waiting ten thousand years for Love
首先,对于一个 '@' 飞上去,飞下来都要耗1点魔力,所以是两点= = 然后站在同一格 魔力可能不同,所以要增加一维. 还有当前搜到的不一定是最小. 别的也没啥. #include <iostr ...
- [Linked List]Insertion Sort List
Total Accepted: 59422 Total Submissions: 213019 Difficulty: Medium Sort a linked list using insertio ...