Android官方文档—APP资源(Resource Types) (Layout)

布局资源

布局资源定义Activity或UI组件中UI的体系结构。

文件位置:

res/layout/filename.xml

文件名将用作资源ID。

编译资源数据类型:
    指向View(或子类)资源的资源指针。
资源参考:
    在Java中:R.layout.filename
    在XML中:@ [package:] layout / filename

语法:

<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@[+][package:]id/resource_name"
    android:layout_height=["dimension" | "match_parent" | "wrap_content"]
    android:layout_width=["dimension" | "match_parent" | "wrap_content"]
    [ViewGroup-specific attributes] >
    <View
        android:id="@[+][package:]id/resource_name"
        android:layout_height=["dimension" | "match_parent" | "wrap_content"]
        android:layout_width=["dimension" | "match_parent" | "wrap_content"]
        [View-specific attributes] >
        <requestFocus/>
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/layout_resource"/>
</ViewGroup>

注意:根元素可以是ViewGroup,View或<merge>元素,但必须只有一个根元素,并且它必须包含带有android命名空间的xmlns:android属性,如图所示。

元素:

<ViewGroup>

其他View元素的容器。有许多不同类型的ViewGroup对象,每个对象都允许您以不同的方式指定子元素的布局。不同种类的ViewGroup对象包括LinearLayout,RelativeLayout和FrameLayout。

您不应该假设ViewGroup的任何派生都将接受嵌套视图。一些ViewGroups是AdapterView类的实现,它仅从适配器确定其子节点。

属性:

android:id

资源ID。元素的唯一资源名称,可用于从应用程序获取对ViewGroup的引用。有关android:id的更多信息,请参阅下面的内容。

android:layout_height

维度或关键字。必要。组的高度,作为维值(或维度资源)或关键字(“match_parent”或“wrap_content”)。请参阅下面的有效值。

android:layout_width

维度或关键字。必要。组的宽度,作为维值(或维度资源)或关键字(“match_parent”或“wrap_content”)。请参阅下面的有效值。

ViewGroup基类支持更多属性,ViewGroup的每个实现都支持更多属性。有关所有可用属性的参考,请参阅ViewGroup类的相应参考文档(例如,LinearLayout XML属性)。

<View>

单个UI组件,通常称为“小部件”。不同种类的View对象包括TextView,Button和CheckBox。

属性:

android:id

资源ID。元素的唯一资源名称,可用于从应用程序获取对View的引用。有关android:id的更多信息,请参阅下面的内容。

android:layout_height

维度或关键字。必要。元素的高度,作为维度值(或维度资源)或关键字(“match_parent”或“wrap_content”)。请参阅下面的有效值。

android:layout_width

维度或关键字。必要。元素的宽度,作为维度值(或维度资源)或关键字(“match_parent”或“wrap_content”)。请参阅下面的有效值。

View基类支持更多属性,View的每个实现都支持更多属性。阅读布局了解更多信息。有关所有可用属性的参考,请参阅相应的参考文档(例如,TextView XML属性)。

<requestFocus>

表示View对象的任何元素都可以包含此空元素,该元素在屏幕上显示其父对象的初始焦点。每个文件只能包含其中一个元素。

<include>

在此布局中包含布局文件。

属性:

layout

布局资源。需要。引用布局资源。

android:id

资源ID。覆盖包含在布局中的根视图的ID。

android:layout_height

维度或关键字。覆盖包含的布局中给根视图的高度。仅在声明了android:layout_width时才有效。

android:layout_width

维度或关键字。覆盖包含的布局中给根视图的宽度。仅在声明了android:layout_height时才有效。

您可以在<include>中包含所包含布局中根元素支持的任何其他布局属性,它们将覆盖根元素中定义的那些属性。

警告:如果要使用<include>标记覆盖布局属性,则必须覆盖android:layout_height和android:layout_width,以使其他布局属性生效。

包含布局的另一种方法是使用ViewStub。它是一个轻量级的View,在你明确地膨胀它之前不会占用任何布局空间,此时它包含一个由android:layout属性定义的布局文件。有关使用ViewStub的更多信息,请阅读按需加载视图。

<merge>

未在布局层次结构中绘制的备用根元素。当您知道此布局将放置在已包含相应父视图的布局中以包含<merge>元素的子元素时,将此作为根元素非常有用。当您计划使用<include>将此布局包含在另一个布局文件中时,这尤其有用,并且此布局不需要不同的ViewGroup容器。有关合并布局的更多信息,请阅读使用<include />重新使用布局。

android:id的值

对于ID值,通常应使用以下语法形式:“@ + id / name”。加号+表示这是一个新的资源ID,aapt工具将在R.java类中创建一个新的资源整数(如果它尚不存在)。例如:

<TextView android:id="@+id/nameTextbox"/>

nameTextbox名称现在是附加到此元素的资源ID。然后,您可以引用与Java关联的ID的TextView:

findViewById(R.id.nameTextbox);

此代码返回TextView对象。

但是,如果您已经定义了ID资源(并且尚未使用它),则可以通过排除android:id值中的加号来将该ID应用于View元素。

android的值:layout_height和android:layout_width:

高度和宽度值可以使用Android支持的任何维度单位(px,dp,sp,pt,in,mm)或以下关键字表示:

ValueDescription
match_parent设置维度以匹配父元素的维度。在API级别8中添加以弃用fill_parent。
wrap_content仅将尺寸设置为适合此元素内容所需的尺寸。

自定义视图元素

您可以创建自己的自定义View和ViewGroup元素,并将它们作为标准布局元素应用于布局。您还可以指定XML元素中支持的属性。有关详细信息,请参阅Custom Components开发人员指南。

例子:

保存在res / layout / main_activity.xml的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_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>

此应用程序代码将在onCreate()方法中加载Activity的布局:



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

参阅

  • Layouts
  • View
  • ViewGroup

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值