Android----布局和菜单
android比较重要和常见的布局有这么几种方式LinearLayout(线性布局)、RelativeLayout(相对布局)、TableLayout(表单布局)、TabLayout(切换卡)
1、线性布局的方式是将View对象从左至右(orientation:horizontal)或者从上到下(orientation:vertical)的次序排列
2、Android中包括三种类型的菜单(Menu) options menu、context menu、submenu
(1)options menu使用主要在两个方面,一个是在onCreateOptionsMenu事件中添加菜单(Menu);二个是在onOptionsItemSelected中处理菜单点击事件。按Menu键即显示,用于当前Activity。options menu包括两种菜单项,因为options menu最多只能显示六个菜单项,这些菜单项即为icon menu,支持设置title、icon、快捷键.多于六个的则会通过‘more’icon menu调出,这些就是expanded menu,除了不支持设置icon外和options menu的特性都一样
a、添加Menu有两种方式,一种XML布局文件加载菜单,另一种是通过代码直接添加菜单。
代码
@Override
public boolean onCreateOptionsMenu(Menu menu){
//从XML布局文件加载菜单
MenuInflater inflater=this.getMenuInflater();
inflater.inflate(R.menu.menu, menu);
//通过方法直接添加菜单
// menu.add(0, Menu.FIRST, 0, "relative");
// menu.add(0, Menu.FIRST+1, 1, "table");
// menu.add(0, Menu.FIRST+2, 2, "tab");
return true;
}
b、处理按钮点击事件
代码
@Override
public boolean onOptionsItemSelected(MenuItem item){
Intent intent = new Intent();
if(item.getItemId()==R.id.relative){
intent.setClass(this, RelativeLayoutTest.class);
}else if(item.getItemId()==R.id.tab){
intent.setClass(this, TabLayoutTest.class);
}else{
intent.setClass(this, TableLayoutTest.class);
}
this.startActivity(intent);
return true;
}
(2)context menu 要在相应的view上按几秒才会显示,用于View,必须与具体的View对象一起。
在Activity中,一般通过以下几个函数来使用context menu
btnadd=(Button)findViewById(R.id.btnadd);
this.registerForContextMenu(btnadd);
代码
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
if(v==(Button)findViewById(R.id.btnadd)){
menu.setHeaderIcon(R.drawable.icon);
menu.setHeaderTitle("我是菜单");
menu.add(1, 0, 0, "菜单1");
// MenuItem - 新增菜单项后的返回类型,针对菜单项的其他设置在此对象上操作
menu.add(1, 1, 1, "菜单2").setCheckable(true);
}
}
(3)Sub Menu: 在options menu 以及 context menu中都可以添加子菜单(sub menu),但是子菜单不能嵌套子菜单,并且不支持设置icon
代码
SubMenu sub=menu.addSubMenu(0, Menu.FIRST+7, 7, "子菜单");
Resources res = getBaseContext().getResources();
sub.setIcon(res.getDrawable(R.drawable.icon));
sub.setHeaderIcon(res.getDrawable(R.drawable.icon));
sub.add(1, Menu.FIRST+8, 0, "one");
sub.add(1, Menu.FIRST+9, 1, "tw0");
图:

参考: http://android.blog.51cto.com/268543/306424
http://www.cnblogs.com/webabcd/archive/2010/01/19/1651197.html


浙公网安备 33010602011771号