您的位置:首页 > 产品设计 > UI/UE

android_Building a Simple User Interface

2013-03-04 23:55 507 查看
http://developer.android.com/training/basics/firstapp/building-ui.html#Weight
     Android app的图形用户界面由有层次的view 和viewGroup构建。View 是指UI Widget(界面),例如 buttons(按钮) 或者 text field(输入框);而ViewGroup是不可见的view 容器,它可以定义子view怎样放置,例如以一种格子列表的形式(以几行几列来排列),或者一种垂直列表的形式(从上排到下)。

    Android 定义的xml元素与View 和ViewGroup的子类相对应,所以你可以在xml里面使用UI元素来定义你的布局。

   


图1.说明ViewGroup怎样形成布局的分支,怎样包含其他的view(总之就是讲View和ViewGroup的关系,ViewGroup为view的父节点)

 

    在这一部分,你将在布局文件里面创建一个text field 和一个button。在接下来的课程里面,你将学到当button被点击的时候,把text field的内容发送到另外一个activity。

    1.创建一个线性布局(LinearLayout)

    把res/layout/activity_main.xml文件打开

    (小提示:在Eclipse里面,当你打开一个布局文件,你首先看到的是图形界面的布局编辑器。它能让你通过WYSIWYG工具来创建布局文件。对这一课来说,你直接用xml来创建,所以点击界面下方的"activity_main.xml"tab来打开xml编辑器)

       当你创建工程的时候,你选择了空activity,它包含activity_main.xml文件。这个文件有一个根view:RelativeLayout(相对布局)和一个子view:TextView.

       首先,删除<TextView>元素,把<RelativeLayout>元素修改成<LinearLayout>.然后需要为LinearLayout(线性布局)的android:orientation属性设置值,这里把它设为horizontal(水平:表示元素会从左到右的线性排列) .经过我们的修改,activity_main.xml文件的内容会变成:

     

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal" ></LinearLayout>

         LinearLayout是一个view group(是ViewGroup的子类),它可以把子view竖直或者水平方向放置,而方向的确定由属性android:orientation的值来决定。每个LinearLayout的子节点按照它们在xml里面显示的那样摆放在屏幕上。

    对所有的view来说,属性android:layout_width和属性android:layout_height都是必须得。它们可以定义view的大小。

    因为LinearLayout是布局的根view,它应该填满app能够获得的整个屏幕空间,所有把它的宽和高设为match_parent,也就是说view应该延展它们的宽和高来跟父view匹配。

需要了解更多关于布局属性的知识,请访问Layout guide.

    2.添加一个TextField

    为了创建一个用户可编辑的输入框,在<LinearLayout>里面添加<EditText>元素。

    就像每个View一样,你必须为EditText的各种属性赋值。这里你将看到怎样在<LinearLayout>里面声明它:

   

<EditText android:id="@+id/edit_message"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:hint="@string/edit_message" /> 

    EditText里面用到的属性:

    android:id:它为View提供唯一标识,这样你可以在代码里面通过这个标识来访问这个view,对它进行一些操作(在接下来的课程里面你将看到)

                      当你在XML文件里面访问其他的资源时,需要用到@。紧接着是资源的类型(在这里面是id),一个/,然后是资源名(edit_message).

                     在资源类型前面的+仅仅在你第一次定义一个标识的时候需要。当你编译app,sdk工具会根据这个id在你工程的gen下面的R.java里面生成一个新的resource ID,这个新ID对应着你的EditText元素。一旦这样定义了一个resource ID,访问这个resource ID的时候就不需要+了。+仅仅用来定义个新的resource ID,对一个明确的资源并需要,例如一个字符串或者一个布局文件。

    android:layout_width 和android:layout_height:不用具体的大小来为width和height赋值,“wrap_content”指这个view应该跟它的内容一样大。如果你使用了“match_parent”,那么EditText将会填满整个屏幕,因为它会跟父节点LinearLayout的size一样。

    android:hint:它的值为一个默认字符串,当textfield为空的时候,将显示这个字符串。通过给它赋值@string/edit_message,这样我们避免了硬编码,而使用了一个独立文件里面定义的字符串资源。因为这里是访问一个具体的资源,不需要+。然而,因为你还没有定义字符串资源,你将看到有编译错误。在接下来的部分将定义字符串,那样可以fix这个错误。

(小提示:字符串资源和元素的ID有一样的名字edit_message.但是,因为它们的资源类型不一样,所以使用一样的名字不会引起冲突)

    3.添加字符串

     当你需要在用户界面添加字符串是,你应该一直将每个字符串定义为一个resource。字符串资源允许在一个单独的地方操作所有界面上的字符串,那样方便查找和更新字符。这样同样方便app的国际化,为不同国家的语言提供不同的字符串资源。

    默认情况下,Android 工程包含一个字符串资源文件:res/values/strings.xml.在这个文件里面增加一个字段"edit_message",设置它的值为"Enter a message".(你可以删除原来文件里面的"hellod_world"字符)

    当你在这个文件的时候,为button添加一个Send的字符串,命名为“button_send”。

     经过修改strings.xml像下面这个样子:

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">My First App</string>    <string name="edit_message">Enter a message</string>    <string name="button_send">Send</string>    <string name="menu_settings">Settings</string>    <string name="title_activity_main">MainActivity</string></resources>

(需要了解更多关于国际化app的,请访问Supporting Different Devices)

    4.增加一个按钮

      现在添加一个<Button>到布局里面,紧跟着<EditText>节点:

<Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/button_send" />

    高度和宽度被设置为wrap_content,所以button仅仅会大到可以摆放它的字符串 。这个button不需要android:id属性,因为它不会在activity的代码里面被访问到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: