您的位置:首页 > 其它

Menu(选项菜单,上下文菜单,弹出式菜单)

2016-06-26 12:50 405 查看
选择菜单,两种方式:一个是手动创建添加,另一个时通过布局填充器添加

public class MyMenu extends Activity {

//Menu会显示在左上角
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}

// 用于创建菜单选项菜单,在打开界面时会自动调用
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//手动创建
// 组的ID,当前选项的ID,排序,标题名称
/*menu.add(0, 100, 1, "导航");
menu.add(0, 200, 2, "功能");
menu.add(0, 300, 3, "设置");*/
//菜单填充器
getMenuInflater().inflate(R.menu.main, menu);

return super.onCreateOptionsMenu(menu);
}

// 通过item来确定选项菜单的单击时间
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
//手动创建
/*switch (itemId) {
case 100:
Toast.makeText(this, "点击的是导航", Toast.LENGTH_LONG).show();
break;
case 200:
Toast.makeText(this, "功能", Toast.LENGTH_LONG).show();
break;
case 300:
Toast.makeText(this, "设置", Toast.LENGTH_LONG).show();
break;
}*/
//填充器
switch (itemId) {
case R.id.one:
Toast.makeText(this, "点击的是导航", Toast.LENGTH_LONG).show();
break;
case R.id.tow:
Toast.makeText(this, "功能", Toast.LENGTH_LONG).show();
break;
case R.id.there:
Toast.makeText(this, "设置", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}

}


上下文菜单,需要注册上下文菜单

public class MycontectMenuActivity extends Activity {

private TextView tv;
//上下文菜单
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mycontect_menu);
tv=(TextView) findViewById(R.id.ontouch);
//注册上下文菜单到组件上    基于长按点击事件
registerForContextMenu(tv);
}

//创建上下文菜单的事件方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
//menu.add(arg0);
getMenuInflater().inflate(R.menu.mycontect_menu, menu);
}

//上下文单击时间
@Override
public boolean onContextItemSelected(MenuItem item) {
int itemId = item.getItemId();
switch (itemId) {
case R.id.red:
tv.setBackgroundColor(Color.RED);
break;
case R.id.bolue:
tv.setBackgroundColor(Color.BLUE);
break;
case R.id.green:
tv.setBackgroundColor(Color.GREEN);
break;
}
return super.onContextItemSelected(item);
}

}


弹出式菜单

public class MycontectMenuActivity extends Activity {

private TextView tv;
//上下文菜单
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mycontect_menu);
tv=(TextView) findViewById(R.id.ontouch);
//注册上下文菜单到组件上    基于长按点击事件
registerForContextMenu(tv);
}

//创建上下文菜单的事件方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
//menu.add(arg0);
getMenuInflater().inflate(R.menu.mycontect_menu, menu);
}

//上下文单击时间
@Override
public boolean onContextItemSelected(MenuItem item) {
int itemId = item.getItemId();
switch (itemId) {
case R.id.red:
tv.setBackgroundColor(Color.RED);
break;
case R.id.bolue:
tv.setBackgroundColor(Color.BLUE);
break;
case R.id.green:
tv.setBackgroundColor(Color.GREEN);
break;
}
return super.onContextItemSelected(item);
}

}


Menu文件下的布局,可以添加子菜单

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<!--  android:showAsAction="never"   不显示
android:showAsAction="always"    一直显示
android:showAsAction="ifRoom"    有空间了显示-->
<item
android:id="@+id/s"
android:orderInCategory="100"
android:showAsAction="never"
android:title="小号"/>
<item
android:id="@+id/xl"
android:orderInCategory="100"
android:showAsAction="never"
android:title="中号"/>
<item
android:id="@+id/xxl"
android:orderInCategory="100"
android:showAsAction="never"
android:title="大号"/>
<item
android:id="@+id/xxxl"
android:orderInCategory="100"
android:showAsAction="never"
android:title="特号">
<menu>
<item
android:id="@+id/xxxxl"
android:orderInCategory="100"
android:showAsAction="never"
android:title="特二"/>
</menu>
</item>

</menu>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: