android 获取菜单标题,android标题菜单、对话框、弹出窗等

本文介绍了Android应用中Menu菜单的相关知识,包括选项菜单概念、从3.0起推荐用ActionBar代替Menu,还介绍了OptionsMenu、ContextMenu、PopupMenu三种菜单分类,给出了创建系统菜单、系统菜单点击响应方法的代码,以及解决4.0后菜单不显示图片的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日期16年29月日学习

一、Menu菜单

(1)、概念:

1、Android应用中的菜单默认是隐藏的,只有当用户点击手机上的MENU键,系统才会显示菜单。这种菜单叫做选项菜单(Option Menu)。

2、从3.0开始,Android不要求手机设备上必须提供MENU按键。因此Android推荐使用ActionBar来代替Menu。

(2)、分类:

OptionsMenu 按手机menu弹出的菜单

ContextMenu 长按UI控件的上下文菜单

PopupMenu 在指定UI控件的下方或上方显示的弹出菜单

----------------创建系统菜单-------------

@Override

public boolean onCreateOptionsMenu(Menu menu) {

setIconEnable(menu, true);

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

return true;

}

-------------------系统菜单的点击相应方法-----------------

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.action_settings:

//setting 设置 跳转到系统设置界面

Intent intent = new Intent();

intent.setAction(Settings.ACTION_SETTINGS);

startActivity(intent);

break;

case R.id.sizeadd:

//字体变大 -- tv.getTextSize()返回的单位是px,tv.setTextSize设置的单位是dp

tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, tv.getTextSize() + 5);

break;

case R.id.sizesub:

//字体变小

tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, tv.getTextSize() - 5);

break;

case R.id.item1:

Toast.makeText(this, "菜单1", Toast.LENGTH_SHORT).show();

item.setChecked(true);

break;

case R.id.item2:

startActivity(new Intent(this, SecondActivity.class));

break;

}

return super.onOptionsItemSelected(item);

}

-----------------------------解决4.0以后菜单上不显示图片的方法------------------

private void setIconEnable(Menu menu, boolean enable)

{

try

{

Class> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");

Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class);

m.setAccessible(true);

//MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征)

m.invoke(menu, enable);

--------------------------------注册控件----- 将textView注册成上下文菜单-----------

registerForContextMenu(tv);-----------tv为TextView

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值