如何使 ActionBar 上的项目分别为左、中、右各一个?

2023-12-23

我在用着actionbarsherlock去做吧。 我想要在操作栏中显示的示例:
[登录]     [公司徽标]     [过滤器]

我在操作栏中得到的示例:
[登录]  [公司徽标]  [过滤器]

我在 res/menu 中创建了登录按钮、公司徽标和过滤按钮(以可绘制的形式)activity_main.xml。但是,操作栏上的这些按钮无法完全向左移动,即使我已删除默认应用程序徽标并将其设置为false:

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled (false);

这是我在菜单中的代码activity_main.xml:

<item android:id="@+id/login"
      android:icon="@drawable/login_btn"
      android:layout_gravity="left"
      android:showAsAction="always"/>

<item android:id="@+id/logo"
      android:icon="@drawable/logo_btn"
      android:layout_gravity="center"
      android:showAsAction="always"/>

<item android:id="@+id/filter"
      android:icon="@drawable/filter_btn"
      android:layout_gravity="right"
      android:showAsAction="always"/>

您应该为此创建自定义视图。例如 (layout/ab_custom.xml):

<?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="match_parent"
    android:layout_gravity="fill_horizontal" >

    <ImageButton
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:src="@drawable/left" />

    <ImageButton
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:src="@drawable/center" />

    <ImageButton
        android:id="@+id/btn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:src="@drawable/right" />

</RelativeLayout>

然后在你的 Activity 中onCreate调用这个方法:

private void showActionBar() {
        LayoutInflater inflator = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflator.inflate(R.layout.ab_custom, null);
    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled (false);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setCustomView(v);
}

要控制您的物品,请使用以下命令:

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.btn1:
            //left button, do something
            return true;
        case R.id.btn2:
            //center button
            return true;
        case R.id.btn3:
            // right button
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

EDIT:修改了我的答案。最好用RelativeLayout as parent.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 ActionBar 上的项目分别为左、中、右各一个? 的相关文章

随机推荐