在 Android 中各种布局的应用,以及菜单效果的实现

  • 各种布局方式的应用,FrameLayout, LinearLayout, TableLayout, AbsoluteLayout, RelativeLayout
  • 为指定元素配置上下文菜单,为应用程序配置选项菜单,以及多级菜单的实现

各种布局方式的演示
res/layout/main.xml

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <!--   
  3. layout_width - 宽。fill_parent: 宽度跟着父元素走;wrap_content: 宽度跟着本身的内容走;直接指定一个 px 值来设置宽  
  4. layout_height - 高。fill_parent: 高度跟着父元素走;wrap_content: 高度跟着本身的内容走;直接指定一个 px 值来设置高  
  5. --> 
  6.  
  7. <!--  
  8. LinearLayout - 线形布局。  
  9.     orientation - 容器内元素的排列方式。vertical: 子元素们垂直排列;horizontal: 子元素们水平排列  
  10.     gravity - 内容的排列形式。常用的有 top, bottom, left, right, center 等,详见文档  
  11. --> 
  12. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  13.     android:orientation="vertical" android:gravity="right" 
  14.     android:layout_width="fill_parent" android:layout_height="fill_parent"> 
  15.  
  16.     <!--  
  17.     FrameLayout - 层叠式布局。以左上角为起点,将  FrameLayout 内的元素一层覆盖一层地显示  
  18.     --> 
  19.     <FrameLayout android:layout_height="wrap_content" 
  20.         android:layout_width="fill_parent"> 
  21.         <TextView android:layout_width="wrap_content" 
  22.             android:layout_height="wrap_content" android:text="FrameLayout"> 
  23.         </TextView> 
  24.         <TextView android:layout_width="wrap_content" 
  25.             android:layout_height="wrap_content" android:text="Frame Layout"> 
  26.         </TextView> 
  27.     </FrameLayout> 
  28.  
  29.     <TextView android:layout_width="wrap_content" 
  30.         android:layout_height="wrap_content" android:text="@string/hello" /> 
  31.  
  32.     <!--  
  33.     TableLayout - 表格式布局。  
  34.         TableRow - 表格内的行,行内每一个元素算作一列  
  35.         collapseColumns - 设置 TableLayout 内的 TableRow 中需要隐藏的列的列索引,多个用“,”隔开  
  36.         stretchColumns - 设置 TableLayout 内的 TableRow 中需要拉伸(该列会拉伸到所有可用空间)的列的列索引,多个用“,”隔开  
  37.         shrinkColumns - 设置 TableLayout 内的 TableRow 中需要收缩(为了使其他列不会被挤到屏幕外,此列会自动收缩)的列的列索引,多个用“,”隔开  
  38.     --> 
  39.     <TableLayout android:id="@+id/TableLayout01" 
  40.         android:layout_width="fill_parent" android:layout_height="wrap_content" 
  41.         android:collapseColumns="1"> 
  42.         <TableRow android:id="@+id/TableRow01" android:layout_width="fill_parent" 
  43.             android:layout_height="wrap_content"> 
  44.             <TextView android:layout_width="wrap_content" 
  45.                 android:layout_weight="1" android:layout_height="wrap_content" 
  46.                 android:text="行1列1" /> 
  47.             <TextView android:layout_width="wrap_content" 
  48.                 android:layout_weight="1" android:layout_height="wrap_content" 
  49.                 android:text="行1列2" /> 
  50.             <TextView android:layout_width="wrap_content" 
  51.                 android:layout_weight="1" android:layout_height="wrap_content" 
  52.                 android:text="行1列3" /> 
  53.         </TableRow> 
  54.         <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" 
  55.             android:layout_height="wrap_content"> 
  56.             <TextView android:layout_width="wrap_content" 
  57.                 android:layout_height="wrap_content" android:text="行2列1" /> 
  58.         </TableRow> 
  59.     </TableLayout> 
  60.  
  61.     <!--  
  62.     AbsoluteLayout - 绝对定位布局。  
  63.         layout_x - x 坐标。以左上角为顶点  
  64.         layout_y - y 坐标。以左上角为顶点  
  65.     --> 
  66.     <AbsoluteLayout android:layout_height="wrap_content" 
  67.         android:layout_width="fill_parent"> 
  68.         <TextView android:layout_width="wrap_content" 
  69.             android:layout_height="wrap_content" android:text="AbsoluteLayout" 
  70.             android:layout_x="100px"   
  71.             android:layout_y="100px" /> 
  72.     </AbsoluteLayout> 
  73.  
  74.     <!--  
  75.     RelativeLayout - 相对定位布局。  
  76.         layout_centerInParent - 将当前元素放置到其容器内的水平方向和垂直方向的中央位置(类似的属性有 :layout_centerHorizontal, layout_alignParentLeft 等)  
  77.         layout_marginLeft - 设置当前元素相对于其容器的左侧边缘的距离  
  78.         layout_below - 放置当前元素到指定的元素的下面  
  79.         layout_alignRight - 当前元素与指定的元素右对齐  
  80.     --> 
  81.     <RelativeLayout android:id="@+id/RelativeLayout01" 
  82.         android:layout_width="fill_parent" android:layout_height="fill_parent"> 
  83.         <TextView android:layout_width="wrap_content" android:id="@+id/abc" 
  84.             android:layout_height="wrap_content" android:text="centerInParent=true" 
  85.             android:layout_centerInParent="true" /> 
  86.         <TextView android:layout_width="wrap_content" 
  87.             android:layout_height="wrap_content" android:text="marginLeft=20px" 
  88.             android:layout_marginLeft="20px" /> 
  89.         <TextView android:layout_width="wrap_content" 
  90.             android:layout_height="wrap_content" android:text="xxx" 
  91.             android:layout_below="@id/abc" android:layout_alignRight="@id/abc" /> 
  92.     </RelativeLayout> 
  93.  
  94. </LinearLayout> 

res/values/strings.xml

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <resources> 
  3.     <string name="hello">Hello Layout</string> 
  4.     <string name="app_name">webabcd_layout</string> 
  5. </resources> 

Main.java

 

  1. package com.webabcd.layout;  
  2.  
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5.  
  6. public class Main extends Activity {  
  7.     /** Called when the activity is first created. */ 
  8.     @Override 
  9.     public void onCreate(Bundle savedInstanceState) {  
  10.         super.onCreate(savedInstanceState);  
  11.         setContentView(R.layout.main);  
  12.     }