如何在ActionBar中对齐菜单项

4

您好,我有三个菜单项默认显示在右侧。

我想将其中一个菜单显示在最左边,其他两个显示在右边。

我的Menu.xml文件如下:

   <menu xmlns:android="http://schemas.android.com/apk/res/android" >

   <item
    android:id="@+id/action_version"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_version"/>
   <item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="@string/action_settings"/>
   <item
    android:id="@+id/action_refresh"
    android:actionViewClass="android.support.v7.widget.RefreshView"
    android:icon="@drawable/ic_refresh_holo_dark"
    android:orderInCategory="100"
    android:gravity ="left"
    android:layout_gravity="left"
    android:showAsAction="ifRoom|collapseActionView"
    android:title="Refresh"/>

   </menu>

我该如何将刷新菜单对齐到最左边,而其他菜单只对齐到右边?

1
为了实现这个,你需要为ActionBar创建一个自定义视图。 - Xaver Kapeller
好的,但是我该如何在选项菜单项上实现点击效果呢? - Neha Shukla
你只需要在自定义视图中使用默认样式即可。 - Xaver Kapeller
为了处理点击事件,将自定义视图视为普通视图。先进行填充,使用findViewById()方法,然后在元素上分配监听器。 - Raghuveer
1个回答

6
最终,我按照以下步骤进行了操作: 我自定义的操作栏 XML 文件如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="fill_horizontal"
android:background="@color/grey"
android:orientation="horizontal" >

<ImageButton
    android:id="@+id/imgrefresh"
    android:layout_width="40dp"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"

    android:layout_marginLeft="10dp"
    android:onClick="toggleMenu"
    android:background="@drawable/img_refresh_click"
    android:scaleType="centerInside"
    android:src="@drawable/ic_refresh_holo_dark" />

<CustomEditText
    android:id="@+id/txtSearchURL"
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:layout_centerVertical="true"
    android:layout_gravity="center"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="0dp"
    android:layout_toRightOf="@+id/imgrefresh"
    android:background="@drawable/url_background"
    android:drawableRight="@drawable/ic_stop_holo_dark"
    android:focusableInTouchMode="true"
    android:hint="@string/search_url_hint"
    android:imeOptions="actionGo"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:scrollHorizontally="true"
    android:singleLine="true"
    android:textColor="@color/white" />

在drawable中,img_refresh_click表示:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true"><shape>
        <gradient android:angle="270" android:endColor="#33819F" android:startColor="#33819F" />
    </shape></item>

<item><shape>
        <gradient android:angle="270" android:endColor="@android:color/transparent" android:startColor="@android:color/transparent" />


    </shape></item>

现在在onCreate()方法内部。
    ActionBar actionBar = getActionBar();
    getActionBar().setDisplayShowHomeEnabled(false);
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setBackgroundDrawable(new ColorDrawable(0xff353538));
    // actionBar.setIcon(R.drawable.ic_action_search);

    LayoutInflater inflator = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    v = inflator.inflate(R.layout.header, null);
    actionBar.setCustomView(v);
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

我的屏幕变成了我期望的样子。 enter image description here

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