布局参数说明及长按某区域出现菜单
16lz
2021-01-26
- <?xmlversion="1.0"encoding="utf-8"?>
- <!--
- layout_width-宽。fill_parent:宽度跟着父元素走;wrap_content:宽度跟着本身的内容走;直接指定一个px值来设置宽
- layout_height-高。fill_parent:高度跟着父元素走;wrap_content:高度跟着本身的内容走;直接指定一个px值来设置高
- -->
- <!--
- LinearLayout-线形布局。
- orientation-容器内元素的排列方式。vertical:子元素们垂直排列;horizontal:子元素们水平排列
- gravity-内容的排列形式。常用的有top,bottom,left,right,center等,详见文档
- -->
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"android:gravity="right"
- android:layout_width="fill_parent"android:layout_height="fill_parent">
- <!--
- FrameLayout-层叠式布局。以左上角为起点,将FrameLayout内的元素一层覆盖一层地显示
- -->
- <FrameLayoutandroid:layout_height="wrap_content"
- android:layout_width="fill_parent">
- <TextViewandroid:layout_width="wrap_content"
- android:layout_height="wrap_content"android:text="FrameLayout">
- </TextView>
- <TextViewandroid:layout_width="wrap_content"
- android:layout_height="wrap_content"android:text="FrameLayout">
- </TextView>
- </FrameLayout>
- <TextViewandroid:layout_width="wrap_content"
- android:layout_height="wrap_content"android:text="@string/hello"/>
- <!--
- TableLayout-表格式布局。
- TableRow-表格内的行,行内每一个元素算作一列
- collapseColumns-设置TableLayout内的TableRow中需要隐藏的列的列索引,多个用“,”隔开
- stretchColumns-设置TableLayout内的TableRow中需要拉伸(该列会拉伸到所有可用空间)的列的列索引,多个用“,”隔开
- shrinkColumns-设置TableLayout内的TableRow中需要收缩(为了使其他列不会被挤到屏幕外,此列会自动收缩)的列的列索引,多个用“,”隔开
- -->
- <TableLayoutandroid:id="@+id/TableLayout01"
- android:layout_width="fill_parent"android:layout_height="wrap_content"
- android:collapseColumns="1">
- <TableRowandroid:id="@+id/TableRow01"android:layout_width="fill_parent"
- android:layout_height="wrap_content">
- <TextViewandroid:layout_width="wrap_content"
- android:layout_weight="1"android:layout_height="wrap_content"
- android:text="行1列1"/>
- <TextViewandroid:layout_width="wrap_content"
- android:layout_weight="1"android:layout_height="wrap_content"
- android:text="行1列2"/>
- <TextViewandroid:layout_width="wrap_content"
- android:layout_weight="1"android:layout_height="wrap_content"
- android:text="行1列3"/>
- </TableRow>
- <TableRowandroid:id="@+id/TableRow01"android:layout_width="wrap_content"
- android:layout_height="wrap_content">
- <TextViewandroid:layout_width="wrap_content"
- android:layout_height="wrap_content"android:text="行2列1"/>
- </TableRow>
- </TableLayout>
- <!--
- AbsoluteLayout-绝对定位布局。
- layout_x-x坐标。以左上角为顶点
- layout_y-y坐标。以左上角为顶点
- -->
- <AbsoluteLayoutandroid:layout_height="wrap_content"
- android:layout_width="fill_parent">
- <TextViewandroid:layout_width="wrap_content"
- android:layout_height="wrap_content"android:text="AbsoluteLayout"
- android:layout_x="100px"
- android:layout_y="100px"/>
- </AbsoluteLayout>
- <!--
- RelativeLayout-相对定位布局。
- layout_centerInParent-将当前元素放置到其容器内的水平方向和垂直方向的中央位置(类似的属性有:layout_centerHorizontal,layout_alignParentLeft等)
- layout_marginLeft-设置当前元素相对于其容器的左侧边缘的距离
- layout_below-放置当前元素到指定的元素的下面
- layout_alignRight-当前元素与指定的元素右对齐
- -->
- <RelativeLayoutandroid:id="@+id/RelativeLayout01"
- android:layout_width="fill_parent"android:layout_height="fill_parent">
- <TextViewandroid:layout_width="wrap_content"android:id="@+id/abc"
- android:layout_height="wrap_content"android:text="centerInParent=true"
- android:layout_centerInParent="true"/>
- <TextViewandroid:layout_width="wrap_content"
- android:layout_height="wrap_content"android:text="marginLeft=20px"
- android:layout_marginLeft="20px"/>
- <TextViewandroid:layout_width="wrap_content"
- android:layout_height="wrap_content"android:text="xxx"
- android:layout_below="@id/abc"android:layout_alignRight="@id/abc"/>
- </RelativeLayout>
- </LinearLayout>
- res/values/strings.xml
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <stringname="hello">HelloLayout</string>
- <stringname="app_name">webabcd_layout</string>
- </resources>
- Main.java
- 代码
- packagecom.webabcd.layout;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- publicclassMainextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
- }
- 2、上下文菜单,选项菜单,子菜单
- res/layout/main.xml
- 代码
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextViewandroid:id="@+id/txt1"android:layout_width="fill_parent"
- android:layout_height="wrap_content"android:text="@string/hello_contextMenu"/>
- <TextViewandroid:id="@+id/txt2"android:layout_width="fill_parent"
- android:layout_height="wrap_content"android:text="@string/hello_subMenu"/>
- </LinearLayout>
- res/values/strings.xml
- 代码
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <stringname="hello_contextMenu">HelloContextMenu</string>
- <stringname="hello_subMenu">HelloContextSubMenu</string>
- <stringname="app_name">webabcd_menu</string>
- </resources>
- Main.java
- 代码
- packagecom.webabcd.menu;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.view.ContextMenu;
- importandroid.view.Menu;
- importandroid.view.MenuItem;
- importandroid.view.SubMenu;
- importandroid.view.View;
- importandroid.view.ContextMenu.ContextMenuInfo;
- importandroid.widget.TextView;
- importandroid.widget.Toast;
- //演示两种菜单的实现方式:上下文菜单(通过在某元素上长按,来呼出菜单)和选项菜单(通过按手机上的菜单按钮,来呼出菜单)
- publicclassMainextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //为R.id.txt1注册一个上下文菜单(在此TextView上长按,则会呼出上下文菜单)
- //具体呼出的菜单内容需要重写onCreateContextMenu来创建
- TextViewtxt1=(TextView)this.findViewById(R.id.txt1);
- this.registerForContextMenu(txt1);
- //为R.id.txt2注册一个上下文菜单
- TextViewtxt2=(TextView)this.findViewById(R.id.txt2);
- this.registerForContextMenu(txt2);
- }
- //重写onCreateContextMenu用以创建上下文菜单
- //重写onContextItemSelected用以响应上下文菜单
- @Override
- publicvoidonCreateContextMenu(ContextMenumenu,Viewv,
- ContextMenuInfomenuInfo){
- super.onCreateContextMenu(menu,v,menuInfo);
- //创建R.id.txt1的上下文菜单
- if(v==(TextView)this.findViewById(R.id.txt1)){
- //ContextMenu.setIcon()-设置菜单的图标
- //ContextMenu.setHeaderTitle()-设置菜单的标题
- menu.setHeaderIcon(R.drawable.icon01);
- menu.setHeaderTitle("我是菜单");
- //用ContextMenu.add()来增加菜单项,返回值为MenuItem
- //第一个参数:组ID
- //第二个参数:菜单项ID
- //第三个参数:顺序号
- //第四个参数:菜单项上显示的内容
- menu.add(1,0,0,"菜单1");
- //MenuItem-新增菜单项后的返回类型,针对菜单项的其他设置在此对象上操作
- menu.add(1,1,1,"菜单2").setCheckable(true);
- }
- //创建R.id.txt2的上下文菜单(多级上下文菜单)
- elseif(v==(TextView)this.findViewById(R.id.txt2)){
- //ContextMenu.addSubMenu("菜单名称")-用来添加子菜单。子菜单其实就是一个特殊的菜单
- SubMenusub=menu.addSubMenu("父菜单1");
- sub.setIcon(R.drawable.icon01);
- sub.add(0,0,0,"菜单1");
- sub.add(0,1,1,"菜单2");
- sub.setGroupCheckable(1,true,true);
- SubMenusub2=menu.addSubMenu("父菜单2");
- sub2.setIcon(R.drawable.icon01);
- sub2.add(1,0,0,"菜单3");
- sub2.add(1,1,1,"菜单4");
- sub2.setGroupCheckable(1,true,false);
- }
- }
- //重写onCreateOptionsMenu用以创建选项菜单
- @Override
- publicbooleanonCreateOptionsMenu(Menumenu){
- MenuItemmenuItem=menu.add(0,0,0,"菜单111111111111111111111");
- //MenuItem.setIcon()-设置菜单项的图标
- //MenuItem.setTitleCondensed()-菜单的简标题,如果指定了简标题的话,菜单项上的标题将会以此简标题为准
- //MenuItem.setAlphabeticShortcut()-设置选中此菜单项的快捷键
- //注:菜单项超过6个的话,第6个菜单将会变为More菜单,多余的菜单会在单击More菜单之后显示出来
- menuItem.setIcon(R.drawable.icon01);
- menuItem.setTitleCondensed("菜单1");
- menuItem.setAlphabeticShortcut('a');
- menu.add(0,1,1,"菜单2").setIcon(R.drawable.icon02);
- menu.add(0,2,2,"菜单3").setIcon(R.drawable.icon03);
- menu.add(0,3,3,"菜单4");
- menu.add(0,4,4,"菜单5");
- menu.add(0,5,5,"菜单6");
- menu.add(0,6,6,"菜单7").setIcon(R.drawable.icon04);
- menu.add(0,7,7,"菜单8").setIcon(R.drawable.icon05);
- returntrue;
- }
- //重写onOptionsItemSelected用以响应选项菜单
- @Override
- publicbooleanonOptionsItemSelected(MenuItemitem){
- super.onOptionsItemSelected(item);
- Toast.makeText(Main.this,"被单击的菜单项为:"+String.valueOf(item.getItemId()),Toast.LENGTH_SHORT).show();
- returnfalse;
- }
- }
更多相关文章
- # android笔记 #
- Android(安卓)UI学习 - Menu
- Android(安卓)开源库——侧滑菜单栏(SlidingMenu)的导入和使用
- android 3D系列之光效篇
- android:三种菜单(Menu)的设置
- Android之Menu选项菜单
- android 基本布局(RelativeLayout、TableLayout等)使用方法及各种
- [UI]抽屉菜单DrawerLayout分析(一)
- Android(安卓)菜单和对话框等