<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-cn">
		<id>http://wiki.tomtalk.net/index.php?action=history&amp;feed=atom&amp;title=PA06</id>
		<title>PA06 - 版本历史</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.tomtalk.net/index.php?action=history&amp;feed=atom&amp;title=PA06"/>
		<link rel="alternate" type="text/html" href="http://wiki.tomtalk.net/index.php?title=PA06&amp;action=history"/>
		<updated>2026-04-24T05:47:06Z</updated>
		<subtitle>本wiki的该页面的版本历史</subtitle>
		<generator>MediaWiki 1.24.2</generator>

	<entry>
		<id>http://wiki.tomtalk.net/index.php?title=PA06&amp;diff=3291&amp;oldid=prev</id>
		<title>Tom：/* 6.1 Android中的UI开发 */</title>
		<link rel="alternate" type="text/html" href="http://wiki.tomtalk.net/index.php?title=PA06&amp;diff=3291&amp;oldid=prev"/>
				<updated>2013-02-07T23:30:07Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;6.1 Android中的UI开发&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==6.1 Android中的UI开发==&lt;br /&gt;
&lt;br /&gt;
要在Android中构建用户界面，有多种方法可供选择。&lt;br /&gt;
# 可以完全用代码来构造用户界面&lt;br /&gt;
# 可以在XML中定义用户界面&lt;br /&gt;
# 先在XML中定义用户界面，然后在代码中引用它和修改它。&lt;br /&gt;
&lt;br /&gt;
完全通过代码创建简单的用户界面&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
package com.androidbook.controls;&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
import android.view.ViewGroup.LayoutParams;&lt;br /&gt;
import android.widget.LinearLayout;&lt;br /&gt;
import android.widget.TextView;&lt;br /&gt;
&lt;br /&gt;
public class MainActivity extends Activity&lt;br /&gt;
{&lt;br /&gt;
    private LinearLayout nameContainer;&lt;br /&gt;
    private LinearLayout addressContainer;&lt;br /&gt;
    private LinearLayout parentContainer;&lt;br /&gt;
&lt;br /&gt;
    /** Called when the activity is first created. */&lt;br /&gt;
    @Override &lt;br /&gt;
    public void onCreate(Bundle savedInstanceState)&lt;br /&gt;
    {&lt;br /&gt;
        super.onCreate(savedInstanceState);&lt;br /&gt;
        createNameContainer();&lt;br /&gt;
        createAddressContainer();&lt;br /&gt;
        createParentContainer();&lt;br /&gt;
        setContentView(parentContainer);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void createNameContainer()&lt;br /&gt;
    {&lt;br /&gt;
        nameContainer = new LinearLayout(this);&lt;br /&gt;
        nameContainer.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));&lt;br /&gt;
        nameContainer.setOrientation(LinearLayout.HORIZONTAL);&lt;br /&gt;
        TextView nameLbl = new TextView(this);&lt;br /&gt;
        nameLbl.setText(&amp;quot;Name: &amp;quot;);&lt;br /&gt;
        TextView nameValue = new TextView(this);&lt;br /&gt;
        nameValue.setText(&amp;quot;John Doe&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        nameContainer.addView(nameLbl);&lt;br /&gt;
        nameContainer.addView(nameValue);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void createAddressContainer()&lt;br /&gt;
    {&lt;br /&gt;
        addressContainer = new LinearLayout(this);&lt;br /&gt;
        addressContainer.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));&lt;br /&gt;
        addressContainer.setOrientation(LinearLayout.VERTICAL);&lt;br /&gt;
        TextView addrLbl = new TextView(this);&lt;br /&gt;
        addrLbl.setText(&amp;quot;Address:&amp;quot;);&lt;br /&gt;
        TextView addrValue = new TextView(this);&lt;br /&gt;
        addrValue.setText(&amp;quot;911 Hollywood Blvd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        addressContainer.addView(addrLbl);&lt;br /&gt;
        addressContainer.addView(addrValue);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private void createParentContainer()&lt;br /&gt;
    {&lt;br /&gt;
        parentContainer = new LinearLayout(this);&lt;br /&gt;
        parentContainer.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));&lt;br /&gt;
        parentContainer.setOrientation(LinearLayout.VERTICAL);&lt;br /&gt;
        parentContainer.addView(nameContainer);&lt;br /&gt;
        parentContainer.addView(addressContainer);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
完全在XML文件中创建用户界面&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;LinearLayout xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
    android:orientation=&amp;quot;vertical&amp;quot; android:layout_width=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;
    android:layout_height=&amp;quot;fill_parent&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- NAME CONTAINER --&amp;gt;&lt;br /&gt;
    &amp;lt;LinearLayout xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;horizontal&amp;quot; android:layout_width=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;TextView android:layout_width=&amp;quot;wrap_content&amp;quot; android:layout_height=&amp;quot;wrap_content&amp;quot; android:text=&amp;quot;Name:&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;TextView android:layout_width=&amp;quot;wrap_content&amp;quot; android:layout_height=&amp;quot;wrap_content&amp;quot; android:text=&amp;quot;John Doe&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ADDRESS CONTAINER --&amp;gt;&lt;br /&gt;
    &amp;lt;LinearLayout xmlns:android=&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;br /&gt;
        android:orientation=&amp;quot;vertical&amp;quot; android:layout_width=&amp;quot;fill_parent&amp;quot;&lt;br /&gt;
        android:layout_height=&amp;quot;wrap_content&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;TextView android:layout_width=&amp;quot;fill_parent&amp;quot; android:layout_height=&amp;quot;wrap_content&amp;quot; android:text=&amp;quot;Address:&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;TextView android:layout_width=&amp;quot;fill_parent&amp;quot; android:layout_height=&amp;quot;wrap_content&amp;quot; android:text=&amp;quot;911 Hollywood Blvd.&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
使用XML结合代码构建UI&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
==6.2 Android中的常见控件==&lt;br /&gt;
&lt;br /&gt;
文本控件&lt;br /&gt;
&lt;br /&gt;
* TextView控件知道如何显示文本，但不允许进行编辑。&lt;br /&gt;
* EditText控件的默认行为是在一行上显示文本并根据需要增加行。&lt;br /&gt;
* AutoCompleteTextView控件是一个具有自动完成功能的TextView。该控件仅为完整文本提供建议我，换句话说，如果键入一个句子，不会获得每个单词的建议。&lt;br /&gt;
* MultiAutoCompleteTextView与AutoCompleteTextView类似，区别在于，使用MultiAutoCompleteTextView时必须告诉控件在何处再次开始建议。&lt;br /&gt;
&lt;br /&gt;
按钮控件&lt;br /&gt;
&lt;br /&gt;
Android提供了3种按钮控件：基本按钮、图像按钮、切换按钮。&lt;br /&gt;
&lt;br /&gt;
# Button&lt;br /&gt;
# ImageButton&lt;br /&gt;
# ToggleButton&lt;br /&gt;
# CheckBox&lt;br /&gt;
# RadioButton&lt;br /&gt;
&lt;br /&gt;
ImageView控件&lt;br /&gt;
&lt;br /&gt;
用于显示图像，图像可能来自一个文件、ContentProvider或图形对象等资源。甚至可以仅指定一种颜色，让ImageView显示该颜色。&lt;br /&gt;
&lt;br /&gt;
日期和时间控件&lt;br /&gt;
&lt;br /&gt;
# DatePicker&lt;br /&gt;
# TimePicker&lt;br /&gt;
# AnalogClock&lt;br /&gt;
# DigitalClock&lt;br /&gt;
&lt;br /&gt;
MapView控件&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
==6.3 适配器==&lt;br /&gt;
&lt;br /&gt;
在介绍Android列表控制之前，先来介绍适配器。列表控件是扩展了android.widget.AdapterView的类，包括ListView、GridView、Spinner和Gallery。&lt;br /&gt;
&lt;br /&gt;
http://img6.ph.126.net/6P4Gx-ZipTX4_zy4aNAAhg==/2610680409008398336.jpg&lt;br /&gt;
&lt;br /&gt;
适配器的用途是为AdapterView管理数据，并为其提供子视图。&lt;br /&gt;
&lt;br /&gt;
SimpleCursorAdapter&lt;br /&gt;
&lt;br /&gt;
http://img4.ph.126.net/MtawnV28KmPPQ3w9UxJ_bw==/1122803682115868554.jpg&lt;br /&gt;
&lt;br /&gt;
ArrayAdapter&lt;br /&gt;
&lt;br /&gt;
它是Android中最简单的适配器，专门用于列表控件。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
ArrayAdapter&amp;lt;String&amp;gt; adapter = new ArrayAdapter&amp;lt;String&amp;gt;(this,&lt;br /&gt;
                                                        android.R.layout.simple_list_item_1,&lt;br /&gt;
                                                        new string[]{&amp;quot;Dave&amp;quot;,&amp;quot;Satya&amp;quot;,&amp;quot;Dylan&amp;quot;});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
从字符串资源文件创建ArrayAdapter&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Spinner android:id=&amp;quot;@+id/spinner&amp;quot; android:layout_width=&amp;quot;wrap_content&amp;quot; android:layout_height=&amp;quot;wrap_content&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
Spinner spinner = (Spinner) findViewById(R.id.spinner);&lt;br /&gt;
ArrayAdapter&amp;lt;CharSequence&amp;gt; adapter = ArrayAdapter.createFromResource(this,&lt;br /&gt;
R.array.planets, android.R.layout.simple_spinner_item);&lt;br /&gt;
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);&lt;br /&gt;
spinner.setAdapter(adapter);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- This file is /res/values/planets.xml --&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
    &amp;lt;string-array name=&amp;quot;planets&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Mercury&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Venus&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Earth&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Mars&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Jupiter&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Saturn&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Uranus&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Neptune&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/string-array&amp;gt;&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
代码清单包含3部分：&lt;br /&gt;
# 一个微调框的XML布局&lt;br /&gt;
# Java代码显示了如何创建ArrayAdapter，它的数据源在一个字符串资源文件中定义。使用此方法，不仅可以将列表内容外化到XML文件中，也可以使用本地化的版本。&lt;br /&gt;
# XML资源文件/res/values/planets.xml，需要读取它来初始化ArrayAdaper。&lt;br /&gt;
&lt;br /&gt;
Android提供的适配器&lt;br /&gt;
&lt;br /&gt;
* ArrayAdapter&amp;lt;T&amp;gt;：这个适配器位于一般的任意对象数组的顶部，需要在ListView中使用。&lt;br /&gt;
* CursorAdapter：这个适配器也需要在ListView中使用，通过游标向列表提供数据。&lt;br /&gt;
* SimpleAdapter：从名称可以看出，这个适配器是一个简单适配器，它通常用于使用静态数据（可能来自资源）填充列表。&lt;br /&gt;
* ResourceCursorAdapter：这个适配器扩展了CursorAdapter，知道如何从资源创建视图。&lt;br /&gt;
* SimpleCursorAdapter：这个适配器扩展了ResourceCursorAdapter，从游标中的列创建TextView/ImageView视图。&lt;br /&gt;
&lt;br /&gt;
==6.4 结合使用适配和AdapterView==&lt;br /&gt;
&lt;br /&gt;
==6.5 样式和主题==&lt;br /&gt;
&lt;br /&gt;
==6.6 布局管理器==&lt;br /&gt;
&lt;br /&gt;
==6.7 使用Hierarcky Viewer调试和优化布局==&lt;br /&gt;
&lt;br /&gt;
==6.2 Android中的常见控件==&lt;br /&gt;
&lt;br /&gt;
文本控件&lt;br /&gt;
&lt;br /&gt;
* TextView控件知道如何显示文本，但不允许进行编辑。&lt;br /&gt;
* EditText控件的默认行为是在一行上显示文本并根据需要增加行。&lt;br /&gt;
* AutoCompleteTextView控件是一个具有自动完成功能的TextView。该控件仅为完整文本提供建议我，换句话说，如果键入一个句子，不会获得每个单词的建议。&lt;br /&gt;
* MultiAutoCompleteTextView与AutoCompleteTextView类似，区别在于，使用MultiAutoCompleteTextView时必须告诉控件在何处再次开始建议。&lt;br /&gt;
&lt;br /&gt;
按钮控件&lt;br /&gt;
&lt;br /&gt;
Android提供了3种按钮控件：基本按钮、图像按钮、切换按钮。&lt;br /&gt;
&lt;br /&gt;
# Button&lt;br /&gt;
# ImageButton&lt;br /&gt;
# ToggleButton&lt;br /&gt;
# CheckBox&lt;br /&gt;
# RadioButton&lt;br /&gt;
&lt;br /&gt;
ImageView控件&lt;br /&gt;
&lt;br /&gt;
用于显示图像，图像可能来自一个文件、ContentProvider或图形对象等资源。甚至可以仅指定一种颜色，让ImageView显示该颜色。&lt;br /&gt;
&lt;br /&gt;
日期和时间控件&lt;br /&gt;
&lt;br /&gt;
# DatePicker&lt;br /&gt;
# TimePicker&lt;br /&gt;
# AnalogClock&lt;br /&gt;
# DigitalClock&lt;br /&gt;
&lt;br /&gt;
MapView控件&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
==6.3 适配器==&lt;br /&gt;
&lt;br /&gt;
在介绍Android列表控制之前，先来介绍适配器。列表控件是扩展了android.widget.AdapterView的类，包括ListView、GridView、Spinner和Gallery。&lt;br /&gt;
&lt;br /&gt;
http://img6.ph.126.net/6P4Gx-ZipTX4_zy4aNAAhg==/2610680409008398336.jpg&lt;br /&gt;
&lt;br /&gt;
适配器的用途是为AdapterView管理数据，并为其提供子视图。&lt;br /&gt;
&lt;br /&gt;
SimpleCursorAdapter&lt;br /&gt;
&lt;br /&gt;
http://img4.ph.126.net/MtawnV28KmPPQ3w9UxJ_bw==/1122803682115868554.jpg&lt;br /&gt;
&lt;br /&gt;
ArrayAdapter&lt;br /&gt;
&lt;br /&gt;
它是Android中最简单的适配器，专门用于列表控件。&lt;br /&gt;
&lt;br /&gt;
ArrayAdapter&amp;lt;String&amp;gt; adapter = new ArrayAdapter&amp;lt;String&amp;gt;(this,&lt;br /&gt;
                                                        android.R.layout.simple_list_item_1,&lt;br /&gt;
                                                        new string[]{&amp;quot;Dave&amp;quot;,&amp;quot;Satya&amp;quot;,&amp;quot;Dylan&amp;quot;});&lt;br /&gt;
从字符串资源文件创建ArrayAdapter&lt;br /&gt;
&amp;lt;Spinner android:id=&amp;quot;@+id/spinner&amp;quot; android:layout_width=&amp;quot;wrap_content&amp;quot; android:layout_height=&amp;quot;wrap_content&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Spinner spinner = (Spinner) findViewById(R.id.spinner);&lt;br /&gt;
ArrayAdapter&amp;lt;CharSequence&amp;gt; adapter = ArrayAdapter.createFromResource(this,&lt;br /&gt;
R.array.planets, android.R.layout.simple_spinner_item);&lt;br /&gt;
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);&lt;br /&gt;
spinner.setAdapter(adapter);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- This file is /res/values/planets.xml --&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
    &amp;lt;string-array name=&amp;quot;planets&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Mercury&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Venus&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Earth&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Mars&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Jupiter&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Saturn&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Uranus&amp;lt;/item&amp;gt;&lt;br /&gt;
        &amp;lt;item&amp;gt;Neptune&amp;lt;/item&amp;gt;&lt;br /&gt;
    &amp;lt;/string-array&amp;gt;&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
代码清单包含3部分：&lt;br /&gt;
# 一个微调框的XML布局&lt;br /&gt;
# Java代码显示了如何创建ArrayAdapter，它的数据源在一个字符串资源文件中定义。使用此方法，不仅可以将列表内容外化到XML文件中，也可以使用本地化的版本。&lt;br /&gt;
# XML资源文件/res/values/planets.xml，需要读取它来初始化ArrayAdaper。&lt;br /&gt;
&lt;br /&gt;
Android提供的适配器&lt;br /&gt;
&lt;br /&gt;
* ArrayAdapter&amp;lt;T&amp;gt;：这个适配器位于一般的任意对象数组的顶部，需要在ListView中使用。&lt;br /&gt;
* CursorAdapter：这个适配器也需要在ListView中使用，通过游标向列表提供数据。&lt;br /&gt;
* SimpleAdapter：从名称可以看出，这个适配器是一个简单适配器，它通常用于使用静态数据（可能来自资源）填充列表。&lt;br /&gt;
* ResourceCursorAdapter：这个适配器扩展了CursorAdapter，知道如何从资源创建视图。&lt;br /&gt;
* SimpleCursorAdapter：这个适配器扩展了ResourceCursorAdapter，从游标中的列创建TextView/ImageView视图。&lt;br /&gt;
&lt;br /&gt;
==6.4 结合使用适配和AdapterView==&lt;br /&gt;
&lt;br /&gt;
==6.5 样式和主题==&lt;br /&gt;
&lt;br /&gt;
==6.6 布局管理器==&lt;br /&gt;
&lt;br /&gt;
==6.7 使用Hierarcky Viewer调试和优化布局==&lt;/div&gt;</summary>
		<author><name>Tom</name></author>	</entry>

	</feed>