当前位置: 首页 > 知识库问答 >
问题:

如何在android中设置左右两个自定义动作栏按钮?

司知
2023-03-14

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

共有2个答案

全鸿晖
2023-03-14

除了Tomik的回答。你需要补充

ab.setDisplayShowCustomEnabled(true);

在onCreate方法中,否则不会显示自定义视图(至少对我来说是这样)。

鞠自明
2023-03-14

您可以创建这样的操作栏,但它比膨胀菜单稍微复杂一点。在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()。

 类似资料:
  • 问题内容: 我要实现ActionBar必须如下所示的自定义: 所以问题: 如何实现类似自定义视图的按钮:仅显示一些图像? 如何在顶部绘制一条线? 以及如何实现不带分隔线的按钮:在上添加标签或添加什么? 问题答案: 如果要使用ActionBarAPI,这几乎与你将获得的接近。我不确定你是否可以在ActionBar不进行奇怪的Window黑客操作的情况下在其上方放置一个色带,这是不值得的。至于更改Me

  • 我想实现定制的,它必须如下所示: 所以问题是: 如何实现自定义视图这样的按钮:只是一些图像

  • 我试图将自定义字体添加到android studio,但未能做到这一点,我刚刚将一种字体复制到call文件夹中,如下所示:如何在android studio中使用自定义字体

  • 本文向大家介绍Android嵌套RecyclerView左右滑动替代自定义view,包括了Android嵌套RecyclerView左右滑动替代自定义view的使用技巧和注意事项,需要的朋友参考一下 以前的左右滑动效果采用自定义scrollview或者linearlayout来实现,recyclerview可以很好的做这个功能,一般的需求就是要么一个独立的左右滑动效果,要么在一个列表里的中间部分一

  • 我希望有人能在这个问题上提供一些意见。欢迎对这两种方法或其他建议提出意见。

  • 下面是构建警报对话框的一般方法。这不是崩溃,只是结果不符合我的预期。 结果: 但是我想要的是取消和触发按钮用完对话框的所有空间,而不是两者都在右侧对齐。 因为我看到许多其他应用程序,如vine、twitter、foursquare等,用我想要的按钮显示警报对话框,所以有没有一种方法可以在创建警报对话框时分配给它,我知道有很多方法可以实现这一点,但我想知道有没有一种方法可以不用使用自定义视图或编辑按