在我的活动中,当用户单击文本选项时,我会放置一个选项菜单,如文本选项,另一个选项菜单(Sub_menu)想要加载文本颜色和文本大小调整我们怎么办?这在Android Plz中帮助我成为Android的新手
答案 0 :(得分:1)
让menu_activity.xml
拥有您想要的所有menu item
。如果您不想最初显示menu item
,请将其可见性设置为false。 android:visible="false"
<item
android:id="@+id/text_options"
android:orderInCategory="2"
android:title="@string/text_options"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/text_color"
android:orderInCategory="3"
android:title="@string/text_color"
android:visible="false"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/text_size"
android:orderInCategory="4"
android:title="@string/text_size"
android:visible="false"
app:showAsAction="ifRoom"/>
在Activity
中有以下方法:
private boolean isShown = true;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_activity, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.findItem(R.id.text_options).setVisible(!isShown);
menu.findItem(R.id.text_color).setVisible(isShown);
menu.findItem(R.id.text_size).setVisible(isShown);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.text_options:
hideMenu();
}
return super.onOptionsItemSelected(item);
}
public void hideMenu() {
isShown = false;
invalidateOptionsMenu();
}
public void showMenu() {
isShown = true;
invalidateOptionsMenu();
}
调用invalidateOptionsMenu()
后,将重新计算菜单列表,即将调用onPrepareOptionsMenu()
。稍微修改一下,你就可以实现你想要的目标。
<强>更新强>
如果您想添加子菜单,请将menu_activity.xml
修改为如下所示:
您可以在任何菜单(子菜单除外)中添加子菜单 添加一个元素作为一个孩子。子菜单很有用 当你的应用程序有很多可以组织的功能时 进入主题,例如PC应用程序菜单栏中的项目(文件,编辑, 查看等)。例如:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/file" android:title="@string/file" > <!-- "file" submenu --> <menu> <item android:id="@+id/create_new" android:title="@string/create_new" /> <item android:id="@+id/open" android:title="@string/open" /> </menu> </item> </menu> To use the menu in your activity, you need to inflate the menu resource (convert the XML resource into a programmable object)
使用MenuInflater.inflate()。在以下部分中,您将看到 如何为每种菜单类型充气菜单。
此处有更多信息:http://developer.android.com/guide/topics/ui/menus.html