Android的创建自定义的溢出菜单项自定义、菜单项、Android

2023-09-12 21:51:20 作者:我睡觉的时候不困

我想除了在像下面的图片中所描述的设定项目创建我的动作条自定义溢出菜单项:

但如果在动作条数的空间,我不希望这样的项目1和项目2进入设定项目为溢,但进入我的溢出项目。

这是我的菜单XML code:

 <菜单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android>
<项目
    机器人:图标=@机器人:可绘制/ ic_menu_agenda
    机器人:标题=项目1
    机器人:showAsAction =ifRoom | withText/>

<项目
    机器人:图标=@机器人:可绘制/ ic_menu_add
    机器人:标题=项目2
    机器人:showAsAction =ifRoom | withText/>

<项目机器人:ID =@ + ID / pick_action_provider
    机器人:图标=@机器人:可绘制/ ic_menu_sort_by_size
    机器人:showAsAction =总是
    机器人:标题=溢出>
     <菜单>
        <项目机器人:ID =@ + ID / action_sort_size
              机器人:图标=@机器人:可绘制/ ic_menu_camera
              机器人:标题=项目3/>
        <项目机器人:ID =@ + ID / action_sort_alpha
              机器人:图标=@机器人:可绘制/ ic_menu_sort_alphabetically
              机器人:标题=ITEM4/>
    < /菜单>
< /项目>

<项目
    机器人:ID =@ + ID / action_settings
    机器人:orderInCategory =100
    机器人:showAsAction =从不
    机器人:标题=@字符串/ action_settings/>< /菜单>
 

解决方案 为何无法创建自定义分辨率

这会帮助你。我对溢出菜单codeD这种

在菜单/ main.xml中的文件

 <项目
    机器人:ID =@ + ID /溢出
    机器人:orderInCategory =100
    机器人:showAsAction =总是
    机器人:图标=@可绘制/ ic_overflow
    机器人:标题=>
    <菜单>
        <项目
            机器人:ID =@ + ID /脸谱
            机器人:标题=脸谱/>

        <项目
            机器人:ID =@ + ID /微博
            机器人:标题=微博/>

        <项目
            机器人:ID =@ + ID /的Youtube
            机器人:标题=YouTube的视频/>
    < /菜单>
< /项目>
 

这里是你的java code:

  @覆盖
公共布尔onCreateOptionsMenu(功能菜单){

    。getMenuInflater()膨胀(R.menu.main,菜单);

    返回true;

}

@覆盖
公共布尔onOptionsItemSelected(菜单项项){

    //手柄操作栏操作点击

    super.onOptionsItemSelected(项目);
    如果(item.getItemId()== R.id.facebook){
        Toast.makeText(Getstarted.this选项pressed =脸谱,Toast.LENGTH_LONG).show();
    }
    否则如果(item.getItemId()== R.id.Youtube){
        Toast.makeText(Getstarted.this选项pressed =的YouTube,Toast.LENGTH_LONG).show();
    }
    否则如果(item.getItemId()== R.id.Twitter){
        Toast.makeText(Getstarted.this选项pressed =微博,Toast.LENGTH_LONG).show();
    }
    返回true;

}
 

I want to create a custom overflow menu item in my ActionBar in addition at the Setting item like described in the image below:

But if there is few space in the ActionBar I don't want that the Item1 and Item2 go into the Setting item as overflow, but into "my overflow item".

this is my menu xml code:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:icon="@android:drawable/ic_menu_agenda"  
    android:title="Item1"
    android:showAsAction="ifRoom|withText" />

<item
    android:icon="@android:drawable/ic_menu_add"  
    android:title="Item2"
    android:showAsAction="ifRoom|withText" />

<item android:id="@+id/pick_action_provider"
    android:icon="@android:drawable/ic_menu_sort_by_size" 
    android:showAsAction="always"
    android:title="Overflow" >
     <menu>  
        <item android:id="@+id/action_sort_size"  
              android:icon="@android:drawable/ic_menu_camera"  
              android:title="Item3" />  
        <item android:id="@+id/action_sort_alpha"  
              android:icon="@android:drawable/ic_menu_sort_alphabetically"  
              android:title="Item4" />  
    </menu>  
</item>

<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/></menu>

解决方案

This will help you. I had coded this for overflow menu

In menu/main.xml file

<item
    android:id="@+id/overflow"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:icon="@drawable/ic_overflow"
    android:title="">
    <menu>
        <item
            android:id="@+id/facebook"
            android:title="Facebook"/>

        <item
            android:id="@+id/Twitter"
            android:title="Twitter"/>

        <item
            android:id="@+id/Youtube"
            android:title="Youtube"/>
    </menu>
</item>

And here is your java code:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

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

    return true;

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    // Handle action bar actions click

    super.onOptionsItemSelected(item);
    if(item.getItemId() == R.id.facebook){
        Toast.makeText(Getstarted.this, "Option pressed= facebook",Toast.LENGTH_LONG).show();
    }
    else if(item.getItemId() == R.id.Youtube){
        Toast.makeText(Getstarted.this, "Option pressed= youtube",Toast.LENGTH_LONG).show();
    }
    else if(item.getItemId() == R.id.Twitter){
        Toast.makeText(Getstarted.this, "Option pressed= twitter",Toast.LENGTH_LONG).show();
    }
    return true;    

}