Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android菜单选项项选定的样式菜单项_Android_Android Menu_Android Styles - Fatal编程技术网

Android菜单选项项选定的样式菜单项

Android菜单选项项选定的样式菜单项,android,android-menu,android-styles,Android,Android Menu,Android Styles,当在操作栏中选中菜单项标题时,我试图突出显示它,并在下面的一个片段中显示它相应的视图。片段加载工作正常,但我无法在单击菜单项时设置它们的样式 我想要的是下面提到的方法- @Override public boolean onOptionsItemSelected(MenuItem item) { // item.setSiblingsStyle(R.style.passive_menu_item); // item.setStyle(R.style.active_menu_ite

当在操作栏中选中菜单项标题时,我试图突出显示它,并在下面的一个片段中显示它相应的视图。片段加载工作正常,但我无法在单击菜单项时设置它们的样式

我想要的是下面提到的方法-

@Override
public boolean onOptionsItemSelected(MenuItem item) {
//     item.setSiblingsStyle(R.style.passive_menu_item);
//     item.setStyle(R.style.active_menu_item);
}

是否可以使用“onOptions ItemSelected”方法设置菜单标题的样式?请帮忙

您可以尝试使用选择器定义:

<?xml version="1.0" encoding="utf-8"?>
  <selector xmlns:android="http://schemas.android.com/apk/res/android"

     <item android:state_pressed="true" android:color="@color/blue_light"/> <!-- pressed -->
     <item android:state_enabled="false" android:color="@color/grey_cloud"/> <!-- focused -->
     <item android:color="@color/black"/> <!-- default -->

  </selector>

我认为只使用文本不是一个好方法。所以我决定添加图标,并通过维护几个变量来使用项目状态进行切换。下面是一个实现:

private current_selected_menu;
private main_menu;

public void updateMenuState(){
    if (main_menu==null){
        return;
    }
    int sz = main_menu.size();
    for(int i=0;i<sz;i++){
        if(main_menu.getItem(i).getItemId()==current_selected_menu){
            main_menu.getItem(i).setEnabled(false);
        }
        else{
            main_menu.getItem(i).setEnabled(true);
        }
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.sample_menu, menu);
    current_selected_menu = menu.getItem(0).getItemId(); // I'm using first item as enabled by default
    main_menu = menu;
    int sz = menu.size();
    for(int i=0;i<sz;i++){
        if(menu.getItem(i).getItemId()==current_selected_menu){
            menu.getItem(i).setEnabled(false);
        }
        else{
            menu.getItem(i).setEnabled(true);
        }
    }
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.item1:
         // Do something
         current_selected_menu = item.getItemId();
         updateMenuState();
         return true;
    case R.id.item2:
         // Do something
         current_selected_menu = item.getItemId();
         updateMenuState();
         return true;
    default:
         // Do Something
         return super.onOptionsItemSelected(item);
    }
}
private current\u selected\u菜单;
私有主菜单;
public void updateCustomate(){
如果(主菜单==null){
返回;
}
int sz=main_menu.size();

对于(int i=0;我能详细说明一下吗?我不知道如何使用菜单中的选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
     <item android:drawable="@drawable/icon_passive" android:state_enabled="false"/>
    <item android:drawable="@drawable/icon_active" android:state_enabled="true"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu1" android:icon="@drawable/icon_selector" android:title="menu1" android:showAsAction="always|withText" android:visible="true"></item>
    <item android:id="@+id/menu2" android:icon="@drawable/icon_selector" android:title="menu2" android:showAsAction="always|withText" android:visible="true"></item>
    <item android:id="@+id/menu3" android:icon="@drawable/icon_selector" android:title="menu3" android:showAsAction="always|withText" android:visible="true"></item>
</menu>