1.具体各种常见的布局属性:
对于控件的 android:layout_alignParent 属性,只有在该布局的父布局也是RelativeLayout是才有用,此属性的含义为将控件边缘与父控件的边缘对齐
android:layout_alignParentLeft="true" --将控件的左边缘和父控件的左边缘对齐
android:layout_alignParentTop="true" --将控件的上边缘和父控件的上边缘对齐
android:layout_alignParentRight="true" --将控件的右边缘和父控件的右边缘对齐
android:layout_alignParentBottom="true" --将控件的底边缘和父控件的底边缘对齐
android:layout_centerInParent="true" --将控件置于父控件的中心位置
android:layout_centerHorizontal="true" --将控件置于水平方向的中心位置
android:layout_centerVertical="true" --将控件置于垂直方向的中心位置
靠右显示:用 android:layout_marginLeft: 距离左边框的距离;
靠左显示:用android:layout_marginRight: 意思是距离右边框的距离。
android:layout_marginTop: 距离上边框
android:layout_marginBottom: 距离下边框
属性gravity:center_horizontal、center_vertical、 center、top、bottom、left、right、start、end、clip_horizontal、clip_vertical、fill、fill_horizontal、fill_vertical。
属性layout_gravity:center_horizontal、center_vertical、 center、top、bottom、left、right、start、end、clip_horizontal、clip_vertical、fill、fill_horizontal、fill_vertical。
gravity属性是对控件自身内容对自己的限定,自己设置gravity让自己处于某个位置。layout_gravity属性是用来设置该View相对与父View的位置。与gravity属性不同的是,layout_gravity属性是用来设置该View相对与父View的位置,具体情况就个人判断有下面这4种情况:
在电视系统的开发中,不得不提到焦点问题,经常会出现焦点规则不够人性化的问题。layout布局中有nextFocus一类属性可以指定焦点规则,就是说当前获得焦点的控件,如果按遥控器上、下、左、右键后,下个焦点应该落到哪个控件上。此类属性有如下4个(使用时不必全部设置,可按需要使用):
nextFocusUp // 指定上键焦点控件
nextFocusDown // 指定下键焦点控件
nextFocusLeft // 指定左键焦点控件
nextFocusRight // 指定右键焦点控件
问题是:标题的文本框想设置成多行输入,
android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用。这也大大的方便的操作。有时需要虚拟键盘只为字符或只为数字。所以inputType尤为重要。
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content"android:inputType="text" />
//文本类型,多为大写、小写和数字符号。
android:inputType="none"
android:inputType="text"
android:inputType="textCapCharacters" 字母大写
android:inputType="textCapWords" 首字母大写
android:inputType="textCapSentences" 仅第一个字母大写
android:inputType="textAutoCorrect" 自动完成
android:inputType="textAutoComplete" 自动完成
android:inputType="textMultiLine" 多行输入
android:inputType="textImeMultiLine" 输入法多行(如果支持)
android:inputType="textNoSuggestions" 不提示
android:inputType="textUri" 网址
android:inputType="textEmailAddress" 电子邮件地址
android:inputType="textEmailSubject" 邮件主题
android:inputType="textShortMessage" 短讯
android:inputType="textLongMessage" 长信息
android:inputType="textPersonName" 人名
android:inputType="textPostalAddress" 地址
android:inputType="textPassword" 密码
android:inputType="textVisiblePassword" 可见密码
android:inputType="textWebEditText" 作为网页表单的文本
android:inputType="textFilter" 文本筛选过滤
android:inputType="textPhonetic" 拼音输入
android:textColorHint设置提示hint信息的颜色。
//数值类型
android:inputType="number" 数字
android:inputType="numberSigned" 带符号数字格式
android:inputType="numberDecimal" 带小数点的浮点格式
android:inputType="phone" 拨号键盘
android:inputType="datetime" 时间日期
android:inputType="date" 日期键盘
android:inputType="time" 时间键盘
android:layout_marginLef是设置整个布局离左边的距离是52像素,
而android:paddingLeft是设置布局里面的内容距离左边是52像素
2.xml文件中各种标签的使用
Include标签
如果在应用中多个界面,会有很多个界面使用相同或者是类似的部分,比如说导航栏或者是标题栏。重复的界面重复写在不同的布局文件中既费时又不方便统一管理。可以将这个重复的界面布局独立出来,然后通过在使用的xml布局中将其引进来。
<include layout = >进行引入。
注意:如果说在引入的文件中需要重新写layout属性,必须要同时将其layout_width和layout_height属性都给重写了,不然重写的属性不会生效。而且可以在include中给这个引入的布局设置一个id,而且这个id会覆盖它原本的id。
ViewStub标签
有时候需要根据动态来决定哪些view显示,哪些不显示,一般是将所有可能用到的view都创建出来,然后将不显示的view的可见性设置为View.GONE,这样的view的如果需要显示的时候就动态将其可见性修改。这样做的缺点是 就算是设置为不可见, 但是其实在加载的时候还是进行了加载的,还是进行了实例化的,所以是浪费资源的。
可以使用ViewStub标签,默认是不可见的,只有通过调用setVisibility或者是inflate才会将其要装载的目标布局加载,这点就和View.Gone不同,viewStub做到了延迟加载,只有在想要显示的时候才对其进行加载布局和实例化,这样就节省了资源。
可以通过两种方式实现加载:
a) 通过setVisibility(View.VISIBLE)的方式,这时候可以通过判断其可见性来得知其是否已经加载。
b) 通过inflate方法来实现加载。注意此时无法通过判断可见性来判断是否已经加载了,可以通过判断其中的元素是否存在来判断加载情况。
注意:ViewStub只能Inflate一次,也就是说某个被ViewStub指向的布局被inflate一次后,就不能再使用viewStub来控制它。
ViewStub也只能用来控制一个布局文件,不是控制某一个view,不过可以将view放在布局文件中。
使用方法:就是类似include,在其中声明要加载的布局文件,也可以设置id、修改layout属性。