如何控制菜单在工具栏中的位置 Android

How to Control Menu Position in Toolbar Android

我想在 android xml 代码中更改膨胀菜单项的重力,但我找不到任何属性来解决问题。 我想要 left 边的一件物品和 Toolbar 角的 right 边的另一件物品。

大家有什么想法吗?

这是我现在的状态:

这是我的菜单xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/dismis"
        android:icon="@drawable/close"
        android:title="Done"
        app:showAsAction="always"></item>

    <item
        android:id="@+id/saveNote"
        android:icon="@drawable/save"
        android:title="Done"
        app:showAsAction="always"></item>


</menu>

好吧,您必须制作自定义布局,然后将其附加到您的应用栏! 你可以在这里查看

link1 link2

在您的 activity

中为应用栏制作自定义布局

dismiss 项使用 Toolbar 导航 item(LEFT),对 saveNote 使用选项 menu(RIGHT) ]项。

关闭:

You can use Toolbar navigation item as dismiss action. Set close icon as Toolbar navigation icon by using Toolbar.setNavigationIcon(). To handle the click event, add NavigationOnClickListener to Toolbar.

保存注意:

Inflate menu XML to Toolbar using Toolbar.inflateMenu(). To handle saveNote item click event, add OnMenuItemClickListener to Toolbar.

按照以下步骤操作:

1.menu XML.

中删除 dismiss
// menu_main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/saveNote"
        android:icon="@drawable/save"
        android:title="Done"
        app:showAsAction="always">
    </item>
</menu>

2. 在您的 activity 中,对 dismisssaveNote 操作进行以下更改。

public class MainActivity extends AppCompatActivity {


    // ToolBar
    Toolbar mToolBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ...........
        .....................

        // ToolBar
        mToolBar = (Toolbar) findViewById(R.id.toolbar);

        // Required to use Toolbar as ActionBar
        setSupportActionBar(mToolBar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setTitle("Whosebug");

        // Dismiss Action
        mToolBar.setNavigationIcon(R.drawable.close);
        mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // Do something
                Toast.makeText(getApplicationContext(), "Dismiss", Toast.LENGTH_SHORT).show();
            }
        });

        // SaveNote Action
        mToolBar.inflateMenu(R.menu.menu_main);
        mToolBar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {

                if (item.getItemId() == R.id.saveNote)
                {
                    // Do something
                    Toast.makeText(getApplicationContext(), "Save", Toast.LENGTH_SHORT).show();
                }
                return true;
            }
        });


        .............
        ....................... 
    }
}

输出:

希望对你有所帮助~