android开发菜单使用,【Android 开发】:UI控件之 Menu 菜单的的使用(三)

1) 布局文件 activity_main.xml 只是定义一个按钮,这里就不再粘贴了。

2) 菜单定义文件 目录:res/menu 下 main.xml

android:id="@+id/share"

android:orderInCategory="100"

android:showAsAction="never"

android:title="Share"/>

android:id="@+id/edit"

android:orderInCategory="100"

android:showAsAction="never"

android:title="Edit"/>

android:id="@+id/delete"

android:orderInCategory="100"

android:showAsAction="never"

android:title="Delete"/>

3). 程序主要代码

public class MainActivity extends Activity {

private Button button1;

private ActionMode actionMode; //使用 ActionMode 完成菜单操作

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initComponent();

//绑定用户的动作,注意这个事件必须是一个长按事件

button1.setOnLongClickListener(new OnLongClickListener() {

/*

* 当你调用startActionMode()方法的时候,系统就会返回一个ActionMode的实例,保存在成员变量中,就可以通过改变上下文条栏来触发对应的事件

* 在下面的的例子中,ActionMode的判断是为了确保在它活动期间不会被重复的再创建,通过在创建实例的时候判断其是否为空。

* @see android.view.View.OnLongClickListener#onLongClick(android.view.View)

*/

@Override

public boolean onLongClick(View v) {

if(actionMode != null) {

return false;

}

actionMode = startActionMode(mActionModeCallBack);

v.setSelected(true);

return true;

}

});

}

//这里面是一个匿名内部类

private ActionMode.Callback mActionModeCallBack = new ActionMode.Callback() {

@Override

public boolean onPrepareActionMode(ActionMode mode, Menu menu) {

// TODO Auto-generated method stub

return false;

}

@Override

public void onDestroyActionMode(ActionMode mode) {

// TODO Auto-generated method stub

//当我们不在使用菜单的时候, actionMode = null 在菜单销毁的时候置空

actionMode = null;

}

//表示我们要加载菜单,从XML中加载菜单

@Override

public boolean onCreateActionMode(ActionMode mode, Menu menu) {

// TODO Auto-generated method stub

MenuInflater inflate = getMenuInflater();

inflate.inflate(R.menu.main, menu);

return true; //返回true 表示加载成功。

}

//处理用户的相应动作

//表示从点击菜单选项中捕获用户的操作

@Override

public boolean onActionItemClicked(ActionMode mode, MenuItem item) {

// TODO Auto-generated method stub

switch (item.getItemId()) {

case R.id.edit:

Toast.makeText(MainActivity.this, "Edit", 3).show();

break;

case R.id.share:

Toast.makeText(MainActivity.this, "share", 3).show();

break;

case R.id.delete:

Toast.makeText(MainActivity.this, "delete", 3).show();

break;

}

return false;

}

};

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

private void initComponent(){

button1 = (Button)findViewById(R.id.button1);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值