近期xml布局文件学习

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属性。

Guess you like

Origin blog.csdn.net/qq_45204129/article/details/120511933