1. <?xmlversion="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. LinearLayout-线形布局。
  8. orientation-容器内元素的排列方式。vertical:子元素们垂直排列;horizontal:子元素们水平排列
  9. gravity-内容的排列形式。常用的有top,bottom,left,right,center等,详见文档
  10. -->
  11. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  12. android:orientation="vertical"android:gravity="right"
  13. android:layout_width="fill_parent"android:layout_height="fill_parent">
  14. <!--
  15. FrameLayout-层叠式布局。以左上角为起点,将FrameLayout内的元素一层覆盖一层地显示
  16. -->
  17. <FrameLayoutandroid:layout_height="wrap_content"
  18. android:layout_width="fill_parent">
  19. <TextViewandroid:layout_width="wrap_content"
  20. android:layout_height="wrap_content"android:text="FrameLayout">
  21. </TextView>
  22. <TextViewandroid:layout_width="wrap_content"
  23. android:layout_height="wrap_content"android:text="FrameLayout">
  24. </TextView>
  25. </FrameLayout>
  26. <TextViewandroid:layout_width="wrap_content"
  27. android:layout_height="wrap_content"android:text="@string/hello"/>
  28. <!--
  29. TableLayout-表格式布局。
  30. TableRow-表格内的行,行内每一个元素算作一列
  31. collapseColumns-设置TableLayout内的TableRow中需要隐藏的列的列索引,多个用“,”隔开
  32. stretchColumns-设置TableLayout内的TableRow中需要拉伸(该列会拉伸到所有可用空间)的列的列索引,多个用“,”隔开
  33. shrinkColumns-设置TableLayout内的TableRow中需要收缩(为了使其他列不会被挤到屏幕外,此列会自动收缩)的列的列索引,多个用“,”隔开
  34. -->
  35. <TableLayoutandroid:id="@+id/TableLayout01"
  36. android:layout_width="fill_parent"android:layout_height="wrap_content"
  37. android:collapseColumns="1">
  38. <TableRowandroid:id="@+id/TableRow01"android:layout_width="fill_parent"
  39. android:layout_height="wrap_content">
  40. <TextViewandroid:layout_width="wrap_content"
  41. android:layout_weight="1"android:layout_height="wrap_content"
  42. android:text="行1列1"/>
  43. <TextViewandroid:layout_width="wrap_content"
  44. android:layout_weight="1"android:layout_height="wrap_content"
  45. android:text="行1列2"/>
  46. <TextViewandroid:layout_width="wrap_content"
  47. android:layout_weight="1"android:layout_height="wrap_content"
  48. android:text="行1列3"/>
  49. </TableRow>
  50. <TableRowandroid:id="@+id/TableRow01"android:layout_width="wrap_content"
  51. android:layout_height="wrap_content">
  52. <TextViewandroid:layout_width="wrap_content"
  53. android:layout_height="wrap_content"android:text="行2列1"/>
  54. </TableRow>
  55. </TableLayout>
  56. <!--
  57. AbsoluteLayout-绝对定位布局。
  58. layout_x-x坐标。以左上角为顶点
  59. layout_y-y坐标。以左上角为顶点
  60. -->
  61. <AbsoluteLayoutandroid:layout_height="wrap_content"
  62. android:layout_width="fill_parent">
  63. <TextViewandroid:layout_width="wrap_content"
  64. android:layout_height="wrap_content"android:text="AbsoluteLayout"
  65. android:layout_x="100px"
  66. android:layout_y="100px"/>
  67. </AbsoluteLayout>
  68. <!--
  69. RelativeLayout-相对定位布局。
  70. layout_centerInParent-将当前元素放置到其容器内的水平方向和垂直方向的中央位置(类似的属性有:layout_centerHorizontal,layout_alignParentLeft等)
  71. layout_marginLeft-设置当前元素相对于其容器的左侧边缘的距离
  72. layout_below-放置当前元素到指定的元素的下面
  73. layout_alignRight-当前元素与指定的元素右对齐
  74. -->
  75. <RelativeLayoutandroid:id="@+id/RelativeLayout01"
  76. android:layout_width="fill_parent"android:layout_height="fill_parent">
  77. <TextViewandroid:layout_width="wrap_content"android:id="@+id/abc"
  78. android:layout_height="wrap_content"android:text="centerInParent=true"
  79. android:layout_centerInParent="true"/>
  80. <TextViewandroid:layout_width="wrap_content"
  81. android:layout_height="wrap_content"android:text="marginLeft=20px"
  82. android:layout_marginLeft="20px"/>
  83. <TextViewandroid:layout_width="wrap_content"
  84. android:layout_height="wrap_content"android:text="xxx"
  85. android:layout_below="@id/abc"android:layout_alignRight="@id/abc"/>
  86. </RelativeLayout>
  87. </LinearLayout>
  88. res/values/strings.xml
  89. <?xmlversion="1.0"encoding="utf-8"?>
  90. <resources>
  91. <stringname="hello">HelloLayout</string>
  92. <stringname="app_name">webabcd_layout</string>
  93. </resources>
  94. Main.java
  95. 代码
  96. packagecom.webabcd.layout;
  97. importandroid.app.Activity;
  98. importandroid.os.Bundle;
  99. publicclassMainextendsActivity{
  100. /**Calledwhentheactivityisfirstcreated.*/
  101. @Override
  102. publicvoidonCreate(BundlesavedInstanceState){
  103. super.onCreate(savedInstanceState);
  104. setContentView(R.layout.main);
  105. }
  106. }
  107. 2、上下文菜单,选项菜单,子菜单
  108. res/layout/main.xml
  109. 代码
  110. <?xmlversion="1.0"encoding="utf-8"?>
  111. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  112. android:orientation="vertical"android:layout_width="fill_parent"
  113. android:layout_height="fill_parent">
  114. <TextViewandroid:id="@+id/txt1"android:layout_width="fill_parent"
  115. android:layout_height="wrap_content"android:text="@string/hello_contextMenu"/>
  116. <TextViewandroid:id="@+id/txt2"android:layout_width="fill_parent"
  117. android:layout_height="wrap_content"android:text="@string/hello_subMenu"/>
  118. </LinearLayout>
  119. res/values/strings.xml
  120. 代码
  121. <?xmlversion="1.0"encoding="utf-8"?>
  122. <resources>
  123. <stringname="hello_contextMenu">HelloContextMenu</string>
  124. <stringname="hello_subMenu">HelloContextSubMenu</string>
  125. <stringname="app_name">webabcd_menu</string>
  126. </resources>
  127. Main.java
  128. 代码
  129. packagecom.webabcd.menu;
  130. importandroid.app.Activity;
  131. importandroid.os.Bundle;
  132. importandroid.view.ContextMenu;
  133. importandroid.view.Menu;
  134. importandroid.view.MenuItem;
  135. importandroid.view.SubMenu;
  136. importandroid.view.View;
  137. importandroid.view.ContextMenu.ContextMenuInfo;
  138. importandroid.widget.TextView;
  139. importandroid.widget.Toast;
  140. //演示两种菜单的实现方式:上下文菜单(通过在某元素上长按,来呼出菜单)和选项菜单(通过按手机上的菜单按钮,来呼出菜单)
  141. publicclassMainextendsActivity{
  142. /**Calledwhentheactivityisfirstcreated.*/
  143. @Override
  144. publicvoidonCreate(BundlesavedInstanceState){
  145. super.onCreate(savedInstanceState);
  146. setContentView(R.layout.main);
  147. //为R.id.txt1注册一个上下文菜单(在此TextView上长按,则会呼出上下文菜单)
  148. //具体呼出的菜单内容需要重写onCreateContextMenu来创建
  149. TextViewtxt1=(TextView)this.findViewById(R.id.txt1);
  150. this.registerForContextMenu(txt1);
  151. //为R.id.txt2注册一个上下文菜单
  152. TextViewtxt2=(TextView)this.findViewById(R.id.txt2);
  153. this.registerForContextMenu(txt2);
  154. }
  155. //重写onCreateContextMenu用以创建上下文菜单
  156. //重写onContextItemSelected用以响应上下文菜单
  157. @Override
  158. publicvoidonCreateContextMenu(ContextMenumenu,Viewv,
  159. ContextMenuInfomenuInfo){
  160. super.onCreateContextMenu(menu,v,menuInfo);
  161. //创建R.id.txt1的上下文菜单
  162. if(v==(TextView)this.findViewById(R.id.txt1)){
  163. //ContextMenu.setIcon()-设置菜单的图标
  164. //ContextMenu.setHeaderTitle()-设置菜单的标题
  165. menu.setHeaderIcon(R.drawable.icon01);
  166. menu.setHeaderTitle("我是菜单");
  167. //用ContextMenu.add()来增加菜单项,返回值为MenuItem
  168. //第一个参数:组ID
  169. //第二个参数:菜单项ID
  170. //第三个参数:顺序号
  171. //第四个参数:菜单项上显示的内容
  172. menu.add(1,0,0,"菜单1");
  173. //MenuItem-新增菜单项后的返回类型,针对菜单项的其他设置在此对象上操作
  174. menu.add(1,1,1,"菜单2").setCheckable(true);
  175. }
  176. //创建R.id.txt2的上下文菜单(多级上下文菜单)
  177. elseif(v==(TextView)this.findViewById(R.id.txt2)){
  178. //ContextMenu.addSubMenu("菜单名称")-用来添加子菜单。子菜单其实就是一个特殊的菜单
  179. SubMenusub=menu.addSubMenu("父菜单1");
  180. sub.setIcon(R.drawable.icon01);
  181. sub.add(0,0,0,"菜单1");
  182. sub.add(0,1,1,"菜单2");
  183. sub.setGroupCheckable(1,true,true);
  184. SubMenusub2=menu.addSubMenu("父菜单2");
  185. sub2.setIcon(R.drawable.icon01);
  186. sub2.add(1,0,0,"菜单3");
  187. sub2.add(1,1,1,"菜单4");
  188. sub2.setGroupCheckable(1,true,false);
  189. }
  190. }
  191. //重写onCreateOptionsMenu用以创建选项菜单
  192. @Override
  193. publicbooleanonCreateOptionsMenu(Menumenu){
  194. MenuItemmenuItem=menu.add(0,0,0,"菜单111111111111111111111");
  195. //MenuItem.setIcon()-设置菜单项的图标
  196. //MenuItem.setTitleCondensed()-菜单的简标题,如果指定了简标题的话,菜单项上的标题将会以此简标题为准
  197. //MenuItem.setAlphabeticShortcut()-设置选中此菜单项的快捷键
  198. //注:菜单项超过6个的话,第6个菜单将会变为More菜单,多余的菜单会在单击More菜单之后显示出来
  199. menuItem.setIcon(R.drawable.icon01);
  200. menuItem.setTitleCondensed("菜单1");
  201. menuItem.setAlphabeticShortcut('a');
  202. menu.add(0,1,1,"菜单2").setIcon(R.drawable.icon02);
  203. menu.add(0,2,2,"菜单3").setIcon(R.drawable.icon03);
  204. menu.add(0,3,3,"菜单4");
  205. menu.add(0,4,4,"菜单5");
  206. menu.add(0,5,5,"菜单6");
  207. menu.add(0,6,6,"菜单7").setIcon(R.drawable.icon04);
  208. menu.add(0,7,7,"菜单8").setIcon(R.drawable.icon05);
  209. returntrue;
  210. }
  211. //重写onOptionsItemSelected用以响应选项菜单
  212. @Override
  213. publicbooleanonOptionsItemSelected(MenuItemitem){
  214. super.onOptionsItemSelected(item);
  215. Toast.makeText(Main.this,"被单击的菜单项为:"+String.valueOf(item.getItemId()),Toast.LENGTH_SHORT).show();
  216. returnfalse;
  217. }
  218. }

更多相关文章

  1. # android笔记 #
  2. Android(安卓)UI学习 - Menu
  3. Android(安卓)开源库——侧滑菜单栏(SlidingMenu)的导入和使用
  4. android 3D系列之光效篇
  5. android:三种菜单(Menu)的设置
  6. Android之Menu选项菜单
  7. android 基本布局(RelativeLayout、TableLayout等)使用方法及各种
  8. [UI]抽屉菜单DrawerLayout分析(一)
  9. Android(安卓)菜单和对话框等

随机推荐

  1. 【自定义控件系列四】android绘制实战(一
  2. Android(安卓)Touch事件传递机制
  3. Android(安卓)动画系列之自定义补间动画
  4. Android(三)数据存储之三SQLite嵌入式数据
  5. Android三种XML解析
  6. Android(安卓)之AsyncHttpClient
  7. 在Ubuntu上为Android增加硬件抽象层(HAL)模
  8. Android(安卓)之 使用MediaPlayer播放音
  9. Google Android(安卓)应用程序结构
  10. OpenGL ES for Android(安卓)环境搭建