【问题标题】:How to Control Menu Position in Toolbar Android如何控制工具栏中的菜单位置 Android
【发布时间】:2017-05-28 06:09:24
【问题描述】:

我想在 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>

【问题讨论】:

  • 尝试在您的布局中使用带有必要 NoActionBar 主题的工具栏。然后您可以更轻松地自定义菜单项。
  • 你的意思是它不可能使用默认工具栏??? @RishabhMaurya
  • 不,我不是那个意思! @那是埃南

标签: java android xml menu android-toolbar


【解决方案1】:

使用Toolbar 导航item(LEFT) 用于dismiss 项目和选项menu(RIGHT) 用于saveNote 项目。

解雇:

您可以使用Toolbar 导航item 作为dismiss 操作。放 close 图标作为 Toolbar 导航图标使用 Toolbar.setNavigationIcon()。要处理 click 事件,请添加 NavigationOnClickListenerToolbar

保存注意:

使用Toolbar.inflateMenu()menu XML 膨胀到Toolbar。到 处理saveNote项目click事件,添加OnMenuItemClickListenerToolbar.

按照以下步骤操作:

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.在您的活动中,对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("StackOverflow");

        // 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;
            }
        });


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

输出:

希望对你有帮助~

【讨论】:

  • 它成功了。谢谢 man.but 我找不到那个项目的 id(关闭按钮)来让事情变得更容易。 @FAT
  • 正如我在回答中提到的,无需在menu.xml 中添加解雇项目。您可以以编程方式使用工具栏导航项来解除操作。请参阅第 2 步。我已在活动代码中进行了评论。 mToolBar.setNavigationIcon(R.drawable.close); mToolBar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 做一些事情 Toast.makeText(getApplicationContext(), "Dismiss", Toast.LENGTH_SHORT).show(); } });
  • ops 你没明白我的意思。我想得到那个图标的 id,比如 android.R.id.home!现在明白了???
  • 它是你自己的图标。您必须在可绘制文件夹中添加关闭/关闭图标。然后像往常一样使用它 R.drawable.your_icon.
  • "我想获取那个图标的 id,比如 android.R.id.home!" >>> 如果您想从onOptionItemselected 方法处理它,那么您仍然可以使用android.R.id.home 来处理解除操作。但是对于这种情况,您不需要mToolBar.setNavigationOnClickListener()。希望你能理解。
【解决方案2】:

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

link1 link2

在您的活动中为 appbar 制作自定义布局

【讨论】:

  • 很高兴您快速回复。
猜你喜欢
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
相关资源
最近更新 更多