安卓开发--Layout--布局---SDK(一)

FROM:http://developer.android.com/guide/topics/ui/declaring-layout.html#Position

一个布局定义用户界面的可视化结构,比如一个活动的用户界面或应用程序部件

在运行时实例化布局元素。你可以用两种方式声明Layout:

1)在XML文件中声明UI元素

2)在运行时实例化布局元素:你的应用程序能够创建View和ViewGroup对象


Android框架,让您可以灵活地使用这些方法中的一方或双方的声明和管理您的应用程序的用户界面。

例如,你可以在XML文件中声明你的应用程序的默认布局,包括将出现的屏幕元素和他们的属性。你

能在你的程序里增加代码修改屏幕对象的状态,包括在运行时XML里面声明的对象。


在XML文件中声明UI的益处是使你更好的从你的程序代码中区分陈述。UI是你的程序

代码的外表,这个意思就是你可以修改或改变它而不需要编辑你的代码和重新编译。

例如,你可以为不同的屏幕方向,不同屏幕大小,不同语言创建XML布局文件。另外

,在XML文件中声明这个布局,使得更加容易了解你的UI的结构,所有更容易调试问题。

所以,这个文件聚焦教会你如何在XML文件中声明你的布局。若干你对在运行时形成

View对象感兴趣,查看ViewGroup和View参考。


通常情况下,声明UI元素的XML词汇表和类名字和方法的结构很接近,元素名称和类

名一致,属性名和方法一致。事实上你可以根据这个一致性,常常可以猜到那个属性

对应类的方法,或哪个类对应XML元素。可是,不是所有的词汇表是一致的。在一些情况下,

命名有些微小的不同。例如,EditText元素有一个text属性,它和EditText.setText()一致。


在Common Layout Object里学习不同的布局类型:http://developer.android.com/guide/topics/ui/declaring-layout.html#CommonLayouts


一 写XML

使用安卓的XML词汇表,你可以迅速的设计UI布局和他们包含的屏幕元素,同样的方式,你可以在HTML里创建WEB页面

每个布局文件必须包含一个根元素,根元素必须是一个View或ViewGroup的对象。一旦你已经定义了一个根元素,你可以增加额外的布局对象或窗口部件,就像子元素去

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

二 加载XML资源

当你编译你的程序,每个XML布局文件被编译进一个View资源。你应该从你的应用程序代码中加载布局资源,在你的

Activity.onCreate()回调函数中实现。然后通过调用setContentView()函数,传递这个View资源到你的布局资源,它的形式上:

R.Layout.layout_file_name,例如,如果你的XML布局保存在main_layout.xml中,你应该在你的活动中这样加载它:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_layout);
}
在你的活动总,活动开始的时候onCreate()回调方法被安卓框架调用。

package com.example.my4;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;


public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}


三 属性

每个View或ViewGroup对象支持他们自己的多样的XML属性。一些属性被指定到一个View对象,例如TextView支持textSize属性,但是这些属性被任何View对象继承,他们可能扩展了这个类。有一些是所有View对象共用的,以为他们从根View类继承,如id属性。另外一些属性被认为是布局参数,这些属性描述确定的View对象的布局方向。就像被对象的父对象ViewGroup定义。


四 ID

任何View对象都有一个整型的ID,在View树中唯一的识别这个View。当应用程序被编译,这个ID作为一个整数被引用,但是ID在XML文件中作为一个字符串,在id属性中。这是一个XML的公共属性,所有View对象都有,和经常被使用。一个ID的语法,在XML中的标签是:

android:id="@+id/my_button"
在字符串最开始位置的符号@,表明XML解析和这个ID字符串定义它为ID资源。+符号表示这是一个新的资源名称,必须创建和添加到我们的资源中,在R.java文件中。有大量的ID资源被安卓的框架提供。当要引用一个安卓的资源ID,你不需要+号,但是必须增加android包命名空间,像这样:

android:id="@android:id/empty"
有了android包命名空间,我们现在可以从android:R资源类中引用ID。

为了从应用程序中创建View和引用它们,一个典型的模式是:

1)在你的布局文件中定义一个View/widget,设置一个唯一的ID

<Button android:id="@+id/my_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/my_button_text"/>
2)然后创建一个View对象的实例和从布局中扑获它

Button myButton = (Button) findViewById(R.id.my_button);
当你创建一个RalatvieLayout时,为View对象定义一个ID是非常重要的。在Relative布局中,兄弟视图能够定义他们的布局相关到另外兄弟视图,这是通过唯一的ID实现。

在整棵视图树中,ID不需要唯一,可是他应该在一部分树中唯一。你可能会搜索整个树,所以你最好定义一个唯一的ID.


五 布局参数

XML布局属性命名为layout_something,定义这个View的布局参数,

每个ViewGroup类实现一个嵌套类,它扩展ViewGroup.LayoutParams。这个子类包含属性类型,它为子视图定义大小和位置,就像你看到的这个图片,父视图为子视图群组定义布局参数,包括视图和视图群组。


注意,每个LayoutParams子类有他自己的设置值的语法。每个子元素必须定义LayoutParams,它适合它的父亲,虽然他可以同样为它的孩子定义不同的LayoutParams。

所有的View群组包括一个layout_width和layout_height,每个视图需要定义它们。许多LayoutParams可以选择的属性。

你可以指定宽和高,

1)wrap_comtent:告诉你的视图的大小根据它的需要

2)fill_parent:告诉你的视图大小和它的父视图群组相同




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值