a b c d e f g h i j k l m n o p q r s t u v w x y z

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

  a、Activity::registerForContextMenu(View view) 为某个view注册context menu,一般在Activity::onCreate里面调用。
btnadd=(Button)findViewById(R.id.btnadd);
this.registerForContextMenu(btnadd);

 

  b、Activity::onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) 创建context menu,和options menu不同,context meun每次显示时都会调用这个函数。
代码
@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);
}
}

 

    c、Activity::onContextItemSelected(MenuItem item) 处理选中的菜单项。

 

 

 

  (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

 

 

 

posted @ 2010-10-11 23:31  莴笋炒肉  阅读(535)  评论(0)    收藏  举报