【问题标题】:Display menus in appbar right在 appbar 右侧显示菜单
【发布时间】:2023-03-17 22:49:02
【问题描述】:

您好,我正在学习材料设计,我创建了一个应用栏。当我将项目添加到 main_menu 时,它会显示在下拉菜单中,但我希望它在应用栏中的设置图标之前显示一个新图标。

我的应用

1) 我想在设置图标旁边添加图标。但是现在当我点击设置图标时它会显示在下拉框中。

主菜单

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">

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

    <item android:id="@+id/favorite"
        android:title="@string/favourite"
        android:orderInCategory="200"
        android:showAsAction="always"
        android:icon="@drawable/ic_favorite_white_24dp"
        />

</menu>

MainActivity.java

public class MainActivity extends ActionBarActivity {
    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        toolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(toolbar);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        if (id == R.id.favorite){
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

【问题讨论】:

    标签: java android material-design


    【解决方案1】:

    试试这个代码

     <item android:id="@+id/favorite"
        android:title="@string/favourite"        
        android:showAsAction="always"
        android:icon="@drawable/ic_favorite_white_24dp"
        />
    
    <item
        android:id="@+id/action_overflow"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        android:icon="@mipmap/options"
        app:showAsAction="always">
        <menu>
            <item
                android:id="@+id/action_my_music"
                app:showAsAction="ifRoom"
                android:title="My music" />
            <item
                android:id="@+id/action_friends"
                app:showAsAction="ifRoom"
                android:title="Friend`s music" />            
        </menu>
    </item>
    

    【讨论】:

      【解决方案2】:

      android 无法在操作栏右侧设置应用图标,但您仍然可以这样做。

      创建一个菜单,比如 main_menu.xml

      <?xml version="1.0" encoding="utf-8"?>
      

      <item android:id="@+id/menu_item"
          android:icon="@drawable/your_app_icon"
          android:title="@string/menu_item"
          app:showAsAction="always"/>  //set showAsAction always
                                      //and this should be the only menu item with show as action always
      
      </menu>
      

      现在只需覆盖类文件中的 onCreateOptionsMenu。

      在 MainActivity.class 中添加这个

      @Override
      public boolean onCreateOptionsMenu(Menu menu){
      
      getMenuInflater().inflate(R.menu.main_menu, menu);
      return super.onCreateOptionsMenu(menu);
      }
      

      完成了!现在,您的应用图标将显示在 ActionBar 的右侧。

      【讨论】:

      • Tnx。我不想将应用程序图标设置为正确。我只希望菜单和图标显示在右侧。我更新了问题请检查。
      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2019-04-15
      • 2015-05-01
      • 2014-02-08
      相关资源
      最近更新 更多