以编程方式在顶部右侧工具栏角添加按钮

4

我正在尝试在工具栏的右上角添加一个按钮,这是我的代码:

   mToolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);

    verified_btn = new Button(getActivity());
    verified_btn.setBackgroundResource(R.drawable.ic_done_black_24dp);

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT);

    params.addRule(RelativeLayout.ALIGN_PARENT_END);
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    params.width = 80;
    params.height = 80;

    verified_btn.setLayoutParams(params);
    verified_btn.setOnClickListener(this);
    mToolbar.addView(verified_btn);

但这是结果:

输入图片说明

我尝试了不同的方法,但问题仍然存在,我该怎么办?


我已经尝试过这个:params.gravity = Gravity.END; 和这个 params.gravity = Gravity.RIGHT,但都没有成功。 - Piero
工具栏的右侧保留给菜单,因此您必须将其设置为菜单项。 - Murat Karagöz
你能展示一下如何将其添加为菜单项吗?我在一个片段中。 - Piero
你可以像在活动中添加菜单一样添加菜单。 - Preetika Kaur
2
如果您使用Toolbar.LayoutParams,指定“Gravity”肯定会起作用。右侧没有为任何内容“保留”。示例:https://dev59.com/V1kT5IYBdhLWcg3wD7Zb#39136512 - Mike M.
显示剩余4条评论
1个回答

2
将以下代码添加到您的活动中,这将添加菜单。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    menu.clear();
    inflater.inflate(R.menu.right_menu, menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    switch (id) {
        case R.id.action_home:
            //Do Whatever you want to do here.
            return true;
    }

    return super.onOptionsItemSelected(item);
}

res > menu > right_menu.xml下添加新的xml。
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/action_home"
        android:orderInCategory="100"
        android:title="@string/title_activity_home"
        android:icon="@drawable/ic_home"
        app:showAsAction="ifRoom" />
</menu>

app:showAsAction="always"将始终显示您的图标。

注意:由于您有片段,因此需要在片段的onCreate中编写此行。

setHasOptionsMenu(true);

enter image description here


1
onCreateOptionsMenu告诉我在片段中从未被使用。 - Piero
谢谢!你知道我怎么改变颜色吗?现在是黑色的,我想要白色的。 - Piero
将图像更改为白色图像。 - Shabbir Dhangot
这很完美。但是将 app:showAsAction="ifRoom" 添加进去。 - Ishant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接