andorid 布局资源属性详解

来源:互联网 发布:阿里云oss api 编辑:程序博客网 时间:2024/05/29 10:09

英文原文链接:http://docs.eoeandroid.com/guide/topics/resources/layout-resource.html


一个布局资源定义了活动中的UI或者UI中的组件的架构。

  • 文件位置*
    :res/layout/filename.xml
    :这个文件(filename.xml)将会被当作资源ID来使用。

  • 编译资源数据类型*
    :指向一个视图View(或其子类)的资源指针。

  • 资源引用*

:用java:R.layout.filename
:用XML: @[package:]layout/filename

  • 语法*

    <?xml version"utf-8"?>











    :* 注意* :根元素可以是一个ViewGroup、一个View或者元素,不过必须有且仅有一个根元素。且要包含xmlns:android属性并按上图所示的设置。

  • 元素* :

:它是其它View元素的容器。有很多各种各样的ViewGroup对象且每一个都要用不同的方式来指定子元素的布局。各种各样的布局包括LinearLayout、RelativeLayout和FrameLayout。

:你不该主观断定所有的ViewGroup派生类都能容纳嵌套的View。有些ViewGroup是AdapterView类的实现,因此就只能容纳Adapter类型的子元素。

:* 属性* :
:android:id:
::资源ID。元素唯一的资源标识,你可以在你的应用程序中使用它来获取一个ViewGroup。想要了解更多请参见下面的value for android:id部分。

:android:layout_height:
::尺寸或关键字。必须要有的。该组的高度,用一个尺寸值(或者度量资源 dimension resource)或者关键字("fill_parent"或者"wrap_content").参考下面的有效值(valid values).

:android:layout_weight:
::尺寸和关键字。必须要有的。该组的宽度,(或者度量资源 dimension resource)或者关键字("fill_parent"或者"wrap_content").参考下面的有效值(valid values).

:ViewGroup基类支持更多的属性,且ViewGroup的子类也支持很多属性。所有可用的属性,可以参考ViewGroup类的相关文档(如LinearLayout XML attributes)。

:一个独立的UI组件,通常被称为"部件"("widget").不同种类的视图(View。)对象包括TextView(文本视图),Button(按钮),和CheckBox(多选框)。

:* 属性* :
:android:id:
:资源ID。元素唯一的资源标识,你可以在你的应用程序中使用它来获取一个View。更多资料请参考下面的value for android:id部分。

:android:layout_height:
:尺寸或关键字。必须要有的。该组的高度,用一个尺寸值(或者度量资源 dimension resource)或者关键字("fill_parent"或者"wrap_content").参考下面的有效值(valid values).

:android:layout_weight:
:尺寸和关键字。必须要有的。该组的宽度,(或者度量资源 dimension resource)或者关键字("fill_parent"或者"wrap_content").参考下面的有效值(valid values).

:View基类支持更多的属性,且View的子类也支持很多属性。想了解更信息请阅读Layouts章节。所有可用的属性,可以参考ViewGroup类的相关文档(如TextView XML attributes)。

:任何表示View类对象的元素都能包含这个内容为空的元素,它把屏幕的初始焦点设成其父元素。在每个文件中你只能有一个这样的元素。

:将一个布局文件包含进当前布局中。
:* 属性* :
:layout:
::布局资源。必须要有的。引用一个布局资源。
:android:id:
::资源ID。覆盖包含进来的布局的根视图的ID。

:android:layout_height
::尺寸和关键字。覆盖包含进来的布局的根视图的高度。当android:layout_width也被声明时才有效。

:android:layout_width
::尺寸和关键字。覆盖包含进来的布局的根视图的宽度。当android:layout_height也被声明时才有效。

::只要是被包含的layout资源根元素支持的属性,你都能在元素中将包含进来,并且会覆盖本资源内根元素已定义的属性。

:* 注意* :如果你想要覆盖layout的尺寸,必须同时覆盖android:layout_height和 android:layout_width——不能只覆盖长度或只覆盖宽度。如果你只覆盖其中一个,则不会生效。(其他布局属性,比如宽度,仍然继承原有布局的。)

:另外一种包含布局的方法是用ViewStub这个类。它是一个轻量级的视图,它不会耗费任何布局空间直到你显式的填充它。

:在某一个时刻,才会把android:layout属性所定义的布局资源文件包含进来。想了解更多关于ViewStub的使用,请阅读Layout Tricks:ViewStubs

:一个可选择的根元素,它没有被画在布局结构中。当你知道这个布局将会被放进一个已经包含父视图的布局中,可以用

:元素作为根元素来包含子元素。这样做会非常有用的。当你打算用把一个布局包含进另一个布局中且这个布局并不需要一个不同的ViewGroup容器。使用将会是一个特别有效的方法。想了解更多关于混合布局的信息,请阅读Layout Tricks:Merging.

  • android:id的值*
    :对于ID的值,通常用"@+id/name"这种语法。"+"号表明这是一个新的资源ID且appt工具将会在R.java类中创建一个新的资源整型标号,如果这还没有存在的话。例如:



    :其中nameTextbox名现在是附属于这个元素的一个资源ID。你可以在Java代码中用这个ID来引用这个TextView.

    findViewById(R.id.nameTextbox);


    :这个代码返回一个TextView对象。
    :如果你已经定义了一个ID Resource(且它还没有被使用)。然后你可以省略android:id里的'+'号并将此ID赋予View元素。

  • android:layout_height和 android:layout_width的值*
    :可以使用Android支持的度量单位(dimension units,如:px,dp,sp,pt,in,mm)或者下表中的关键字来表示高度和宽度的值。

<!-- 表格开始 -->
{|style="border-spacing: 0px;margin: 4px 4px; width: 90%; border-left:1px solid #ccc;border-top:1px solid #ccc; "

<!-- 这段是表头 -->
|-style="background:#DEE8F1; "
! style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px" | 值

! style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px" | 描述
<!-- 这段是表格 -->
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |
match_parent

| style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |
设置为跟父元素匹配的大小。从API Level 8 开始加入,用以取代fill_parent。

<!-- 这段是表格 -->
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |
fill_parent

| style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |
设置为跟父元素匹配的大小。
<!-- 这段是表格 -->
|- style=" vertical-align:top;"
| style=" border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |
wrap_content

| style="border-right:1px solid #ccc;border-bottom:1px solid #ccc; padding:5px 15px; " |
设置为仅跟元素中内容相匹配的大小。
|}
<!-- 表格结束 -->

  • 自定义视图元素* :你可以创建自己的View和ViewGroup元素,然后像使用标准的布局元素一样使用它们。你也可以在XML元素中定义它支持的属性。想要了解更多信息,请参见Custom Components开发指南。

例子:
:XML文件保存在res/layout/main_activity.xml文件中。

<?xml version"utf-8"?>



:下面代码表示:在onCreate())方法中,为一个Activity加载一个布局。

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView.(R.layout.main_activity);
}

参见:
* Layouts
* View
* ViewGroup


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 健康证怎么办 在哪办 怎么办健康证去哪里办 公司合同不给我怎么办 孕妇吃了酸梅粉怎么办 婧氏牙膏没客源怎么办 乐视手机耗电快怎么办 乐视手机费电快怎么办 最爱最恨都是你怎么办 耳朵长疱疹很痛怎么办 刚怀孕就有霉菌怎么办 车牌选错了想换怎么办 足癣传染到身上怎么办 金鱼生病了立鳞怎么办 脸上有闭口痘痘怎么办 泰迪得了皮肤癣怎么办 qq截图发不出去怎么办 半夜2点肚子饿怎么办 半夜两三点饿了怎么办 科目三预约不上怎么办 心脏支架又堵了怎么办 车辆验车过期了怎么办 车辆年审过期2天怎么办 违停单子丢了怎么办 沙发弹簧包坏了怎么办 bt种子被和谐了怎么办 苹果手机id密码忘了怎么办 墙漆颜色太深了怎么办 油漆颜色太深了怎么办 墙面漆颜色太深怎么办 古代打仗牙掉了怎么办 乐视电视没声音怎么办 老公疑心病很重怎么办啊 被安装了尿道锁怎么办 狼青小狗腿罗圈怎么办 备孕期间有霉菌怎么办 虫子进皮肤里了怎么办 生完孩子肚子越来越大怎么办 怀孕8个月肚子小怎么办 孕晚期胎儿不长怎么办 肚子上肉特别多怎么办 奶堵了有硬块怎么办