Chinaunix首页 | 论坛 | 博客
  • 博客访问: 140345
  • 博文数量: 51
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 625
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-03 15:40
文章分类
文章存档

2011年(1)

2009年(50)

我的朋友

分类: C/C++

2009-05-08 10:47:00

Android连载之:第三章第二节:Android用户界面(续)
顶嵌|嵌入式培训|嵌入式Linux培训|承接嵌入式项目开发   2009-05-07 15:50:25 作者:邹德文 来源:顶嵌原创android技术文章 文字大小:[][][]

列可以被隐藏,也可以被设置为伸展的从而填充可利用的屏幕空间,也可以被设置为强制列收缩直到表格匹配屏幕大小。对于更详细信息,可以查看这个类的参考文档。 

AbsoluteLayout

可以让子元素指定准确的x/y坐标值,并显示在屏幕上。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。AbsoluteLayout没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用AbsoluteLayout,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。 

RelativeLayout

允许子元素指定他们相对于其它元素或父元素的位置(通过ID指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用XML来指定这个layout,在你定义它之前,被关联的元素必须定义。 

这是一个RelativeLayout例子,其中有可视的和不可视的元素。基础的屏幕layout对象是一个RelativeLayout对象。

这个视图显示了屏幕元素的类名称,下面是每个元素的属性列表。这些属性一部份是由元素直接提供,另一部份是由容器的LayoutParams成员(RelativeLayout的子类)提供。RelativeLayout参数有width,height,below,alignTop,toLeft,padding和marginLeft。注意,这些参数中的一部份,其值是相对于其它子元素而言的,所以才RelativeLayout。这些参数包括toLeft,alignTop和below,用来指定相对于其它元素的左,上和下的位置。

Summary of Important View Groups 

重要View Group摘要 

These objects all hold child UI elements. Some provide visible UI, and others only handle child layout. 

这些对象拥有UI子元素。一些提供可视的UI,另一些只处理子元素的布局。 

Class 

Description 

 

可以通过精确的坐标(如屏幕像素)指定子对象相对父容器的位置 

负责显示单一对象的Layout 

一个以水平滚动方式显示有序图片列表的显示器 

  

显示一个可滚动的有m列n行的表格 

  

以水平或垂直方式显示子元素的Layout。如果窗体的长度超过了屏幕的长度,将会出现滚动条 

显示一个可滚动的单列列表 

PopupList 

一个独立的带边框的元素弹出列表 

  

能够指定子对象相对于其它对象(如A在B的左边)或父对象(如在父容器的顶部)的位置 

一个垂直的元素滚动列 

在一个单行文本框中,同时只显示一个有序列表中的一个项。类似于一个可以水平或垂直滚动的单行listbox 

提供直接访问一个可画图的界面。可以控制在界面顶部的子视图层。SurfaceView是提供给需要直接画像素而不是使用窗体部件的应用使用的。 

提供一个页签选择列表,监视点击并在一个页签被点击时保证应用切换屏幕。 

  

一个拥有任意行和列的表格layout,每一个单元格拥有窗体部份。行会根据最大的列而自动调整大小。单元格边框不可见。 

一个在单行文本框中同一时刻只显示一项的列表组件。它可以根据时间周期切换显示项,类似一个幻灯机。 

  

类似ViewFlipper 

3.2.3数据绑定 

有些View groups会有UI。这些对象通常是AdapterView类的子类.例如包括图库和列表视图, 它们具有两个共同的职责:

· 填充布局数据 

· 处理用户操作 

填充布局数据

填充布局数据通常通过把这个类绑定到一个来完成,Adapter从某个地方获取它的数据,或者是代码提供的一个列表,或者是来自设备数据库的查询结果。 

// Get a Spinner and bind it to an ArrayAdapter that 

// references a String array.

Spinner s1 = (Spinner) findViewById(R.id.spinner1);

ArrayAdapter adapter = ArrayAdapter.createFromResource(

    this, R.array.colors, android.R.layout.simple_spinner_item);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

s1.setAdapter(adapter);

// Load a Spinner and bind it to a data query.

private static String[] PROJECTION = new String[] {

        People._ID, People.NAME

    };

Spinner s2 = (Spinner) findViewById(R.id.spinner2);

Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null);

     

SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,

    android.R.layout.simple_spinner_item, // Use a template

                                          // that displays a

                                          // text view

    cur, // Give the cursor to the list adatper

    new String[] {People.NAME}, // Map the NAME column in the

                                         // people database to...

    new int[] {android.R.id.text1}); // The "text1" view defined in

                                     // the XML template

 

adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

s2.setAdapter(adapter2);

注意:使用CursorAdapter时,必须有People._ID, 否则将会发生异常。

处理用户操作

Android通过设置类的AdapterView.OnItemClickListener 成员到一个监听者并捕捉用户的操作事件,来处理用户的操作。 

 // Create a message handling object as an anonymous class.

 private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {

     public void onItemClick(AdapterView parent, View v, int position, long id)

     {

         // Display a messagebox.

         showAlert("You've got an event", "Clicked me!", "ok", false);

     }

 };

 

 // Now hook into our object and set its onItemClickListener member

 // to our class handler object. 

 mHistoryView = (ListView)findViewById(R.id.accept_button);

 mHistoryView.setOnItemClickListener(mMessageClickedHandler);

以上文章转载自顶嵌站点:

阅读(2362) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~