定义Android Layout(XML)时,有四个比较特别的标签是非常重要的,分别是<viewStub />、<merge />、 <include />、 <requestFocus />。前三种与资源复用有关,下面简单的介绍一下这四个标签的用法。
---------------------------------------------------------------------华-丽-分-割-符--------------------------------------------------------------------
第一个介绍<viewStub/>
此标签可以使UI在特殊情况下,直观效果类似于设置View的不可见性,但是其更大的(R)意义在于被这个标签所包裹的Views在默认状态下不会占用任何内存空间。viewStub通过include从外部导入Views元素。
用法:通过android:layout来指定所包含的内容。默认情况下,ViewStub所包含的标签都属于visibility=GONE。viewStub通过方法inflate()来召唤系统加载其内部的Views。
代码片段:
<pre name="code" class="java"><span style="font-size:18px;"><ViewStub </span>
<span style="font-size:18px;"><span style="white-space:pre"> </span>android:id="@+id/et_name"
<span style="white-space:pre"> </span>android:inflatedId="@+id/stub"
<span style="white-space:pre"> </span>android:layout="@layout/ll_login"
<span style="white-space:pre"> </span>android:layout_width="120dp"
<span style="white-space:pre"> </span>android:layout_height="100dp</span><span style="font-size:18px;">" /></span>
第二个 <include />:
可以通过这个标签直接加载外部的xml到当前结构中,是复用UI资源的常用标签。
用法:将需要复用xml文件路径赋予include标签的Layout属性。
代码片段:
<include android:id="@+id/name" layout="@layout/ll_login" />
此标签一般用于layout使用framLayout作为根节点。用<merge/>节点来代替frameLayout节点来减少资源浪费。由于现在使用framLayout的布局比较少,所以这里不再说明merge标签的具体功能,如果想了解,可以点击这里的链接点击打开链接
第四个 <requestFocus />
标签用于指定屏幕内的焦点View。
用法: 将标签置于Views标签内部
代码片段:
<EditText
android:id="@+id/et_result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number">
<requestFocus />
</EditText>
解释:此时屏幕内的焦点在EditView