android menu点击事件6,Android Menu

Android Menu

1.Android Menu(菜单)分为两种

选项菜单 OptionMenu

上下文菜单ContextMenu

2. 实现目录的基本操作

在xml文件中定义布局文件

重写onCreateOptions(或Context)Menu,创建目录

重写onOptions(或Context)ItemSelected,响应目录的点击事件

3. 目录xml文件的定义

android:id="@+id/menu_id"

android:title="menu_title"

/>

......

代码1

4. Android Menu的主要方法

4.1 OptionMenu(选项菜单)

> onCreateOptionsMenu(Menu menu

创建OptionsMenu

> onOptionsItemSelected(MenuItem Item)

监听OptionsMenu的点击事件

4.2 ContextMenu(上下文菜单)

> onCreateContextMenu(Menu menu )

创建ContextMenu

> onContextItemSelected(MenuItem Item)

监听ContextMenu的点击事件

> registerForContextMenu

注册ContextMenu,在onStart中

> unRegisterForContextMenu

注销ContextMenu,在onStop中

> openContextMenu

在希望ContextMenu出现时调用,打开ContextMenu

5. 覆写Menu方法的注意事项

覆写onCreateContextMenu或onCreateOptionsMenu时,一定要写getMenuInflater.inflate(R.Menu.你需要的xml文件 ,menu )

在覆写Selected方法时,常使用getItemId和switch方法

在onStart中使用registerForContextMenu

在onStop中使用unRegisterForContextMenu

5.1 代码展示(以OptionsMenu为例)

@Override

public boolean onCreateOptionsMenu(Menu menu) {

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

//R.menu.menu是自己创建的目录xml文件

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

switch ( id ){

case R.id.menu_1 :

Toast.makeText(MainActivity.this,"you click menu_1" ,Toast.LENGTH_LONG).show();

break;

case R.id.menu_2 :

Toast.makeText(MainActivity.this,"you click menu_2" ,Toast.LENGTH_LONG).show();

break;

default:

break;

}

return true;

}

代码2

6. OptionsMenu(选项目录)

optionsMenu的实现比较简单,注意点上面已提,且所要展示的代码就是代码2,此处仅补充目录xml文件代码

android:id="@+id/menu_1"

android:title="111"

/>

android:id="@+id/menu_2"

android:title="222"

/>

7. ContextMenu(上下文目录)

7.1 Contextmenu分为两种

长按某个控件弹出

自定义上下文目录的弹出模式,如在单击中弹出

7.2 长按控件弹出

在onStart方法中加入registerForContextMenu为指定控件注册上下文菜单

在onStop方法中加入unregisterForContextMenu注销上下文菜单

长按控件弹出和自定义弹出相比,只是多出了openContextMenu方法的调用,所以此处代码省略,去掉下述代码中调用openContextMenu处即可

7.3 自定义弹出模式

在onStart方法中加入registerForContextMenu为指定控件注册上下文菜单

在相应的方法中加入openContextMenu,如在onClickListener中加入,在单击事件中弹出

在onStop方法中加入unregisterForContextMenu注销上下文菜单

想在什么事件中弹出ContextMenu,就在哪里调用openContextMenu()

7.4 代码展示(单击事件中弹出上下文目录)

public class MainActivity extends AppCompatActivity {

Button button;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button = (Button) findViewById(R.id.main_but);

//在单击事件中调用openContextMenu

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

openContextMenu(button);

}

});

}

//定义ContextMenu的创建方法

@Override

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

super.onCreateContextMenu(menu, v, menuInfo);

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

}

@Override

protected void onStart() {

super.onStart();

registerForContextMenu(button);

//注册ContextMenu

}

@Override

protected void onStop() {

super.onStop();

unregisterForContextMenu(button);

//取消注册ContextMenu

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值