如何将菜单项设置到操作栏的左侧?

时间:2014-10-10 08:02:04

标签: android menu android-actionbar menuitem

我正在创建一个具有操作栏的android应用程序,操作栏包含两侧的菜单项。所以,我需要在左侧添加一个菜单项,在操作栏的右侧添加一个菜单项。

为此,我创建了一个自定义布局并将其设置为操作栏。如下图所示

action bar having custom layout

但我只想在左侧和右侧的位置放置菜单项,另一个屏幕截图显示带有菜单项的操作栏

actionbar with menu itemss

在此操作栏中包含菜单项。所以,我只想把加号按钮菜单项放在左侧,与第一个屏幕截图相同,但我不想使用自定义布局,

此外,我需要设置操作栏标题的字体样式并将其放在中心位置。

请帮帮我。我花了很多时间在这上面。

谢谢

2 个答案:

答案 0 :(得分:4)

您可以直接向工具栏添加可绘制的导航,请尝试以下代码:

yourToolbar.setNavigationIcon("Resource id")

yourToolbar.setNavigationOnClickListener(new ClickListener(){})

答案 1 :(得分:1)

您必须为此创建自定义视图。您无法在用例中使用选项菜单通胀。

将活动的样式设置为Theme.AppCompat,并且不要在活动或应用程序样式中使用NoActionBar。

创建custom_menu布局。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
    <ImageButton android:src="@drawable/add"
                 android:background="?attr/actionBarItemBackground"
                 android:layout_width="?attr/actionBarSize"
                 android:layout_height="?attr/actionBarSize"
                 android:scaleType="centerInside"
                 android:id="@+id/action_add"
                 android:layout_alignParentLeft="true"
                 android:layout_alignParentTop="true"/>

    <TextView android:text="NewsFeed"
                 android:background="?attr/actionBarItemBackground"
                 android:layout_height="?attr/actionBarSize"
                 android:layout_width="wrap_content"
                 android:scaleType="centerInside"
                 android:id="@+id/text_appname"
                 android:textSize="30sp"
                 android:textStyle="bold"
                 android:layout_marginLeft="5dp"
                 android:textColor="#FFF"
                 android:paddingTop="5dp"
                 android:layout_toRightOf="@+id/action_add"
                 android:layout_alignParentTop="true"/>

    <ImageButton android:src="@drawable/search"
                 android:background="?attr/actionBarItemBackground"
                 android:layout_width="?attr/actionBarSize"
                 android:layout_height="?attr/actionBarSize"
                 android:scaleType="centerInside"
                 android:id="@+id/action_search"
                 android:layout_alignParentRight="true"
                 android:layout_alignParentTop="true"/>
</RelativeLayout>

在您的活动onCreate中添加以下代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mainfeed);
    ActionBar mActionBar = getSupportActionBar();
    mActionBar.setDisplayShowHomeEnabled(false);
    mActionBar.setDisplayShowTitleEnabled(false);
    LayoutInflater li = LayoutInflater.from(this);
    View customView = li.inflate(R.layout.custom_menu, null);
    mActionBar.setCustomView(customView);
    mActionBar.setDisplayShowCustomEnabled(true);
    ImageButton addContent = (ImageButton)    customView.findViewById(R.id.action_add);
    addContent.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // ...
        }
    });

    ImageButton search = (ImageButton) customView.findViewById(R.id.action_search);
    search.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // ...
        }
    });
}