【问题标题】:How to set two custom actionbar button in left and right in android?如何在android中左右设置两个自定义actionbar按钮?
【发布时间】:2018-05-29 05:04:02
【问题描述】:

我正在使用 Sherlock 库,我也自己实现。我的问题是我在菜单中添加了两个项目,现在我想要操作栏左侧的一项和操作栏右侧的第二项。怎么做?

【问题讨论】:

  • 你的意思是:[A][ActionBar][B]?还是[A ActionBar B]?
  • 是的,我想要 [A] [ActionBar] [B]

标签: android


【解决方案1】:

您可以创建这样的操作栏,但它比膨胀菜单复杂一点。在onCreateOptionsMenu() 方法中创建的菜单将始终向右对齐,放置在拆分操作栏中​​或隐藏在菜单键下。

如果您希望您的操作栏只包含两个菜单项 - 一个在左边缘,另一个在右边缘 - 您必须在操作栏中创建自定义视图。

自定义视图布局将是这样的:

<?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/ic_menu_item1"
                 android:background="?attr/actionBarItemBackground"
                 android:layout_width="?attr/actionBarSize"
                 android:layout_height="match_parent"
                 android:scaleType="centerInside"
                 android:id="@+id/item1"
                 android:layout_alignParentLeft="true"
                 android:layout_alignParentTop="true"/>

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

在您要使用自定义视图的主题中定义。主题应包含:

<style name="MyTheme" parent="@style/Theme.Sherlock">
    <item name="actionBarStyle">@style/MyActionBarStyle</item>
    <item name="android:actionBarStyle">@style/MyActionBarStyle</item>
</style>

<style name="MyActionBarStyle" parent="@style/Widget.Sherlock.ActionBar">
    <item name="displayOptions">showCustom</item>
    <item name="android:displayOptions">showCustom</item>
</style>

在活动(或片段)中设置自定义视图:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ActionBar ab = getSherlock().getActionBar();
    LayoutInflater li = LayoutInflater.from(this);
    View customView = li.inflate(R.layout.my_custom_view, null);
    ab.setCustomView(customView);

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

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

您必须为菜单项添加点击侦听器。在这种情况下,您不能使用 onOptionsItemSelected()

【讨论】:

    【解决方案2】:

    除了Tomik's answer。你需要添加

    ab.setDisplayShowCustomEnabled(true);
    

    在 onCreate 方法中,否则自定义视图不会出现(至少对我而言)。

    【讨论】:

    • 我使用了 actionBar.setDisplayShowCustomEnabled(true);和 actionBar.setNavigationMode(ActionBar.DISPLAY_SHOW_CUSTOM);两个都。但仍然布局显示在最右侧...任何建议!
    猜你喜欢
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多