【问题标题】:React to click on the ...-button反应点击...按钮
【发布时间】:2015-08-06 12:37:05
【问题描述】:

默认情况下,Android ActionBar 的右上角有一个 ...Button(又名菜单溢出Button)。 这个Button 打开选项菜单溢出,用户可以从中选择不同的项目。

是否可以直接对 ... Button 上的新闻做出反应?

我想要实现的是没有弹出菜单。相反,我想要的行为是打开一个新的Activity。就像一个设置活动。

【问题讨论】:

  • 你的问题不是很清楚。
  • 以什么方式?您认为缺少哪些信息?
  • 为什么所有的反对票?这个问题对我来说似乎是合法的,我完全理解他想要什么。
  • 我也不同意所有这些反对意见。我已经进行了编辑以尝试提供帮助。
  • 说真的,人们还在反对这个?这个问题是合法的,现在很容易阅读。并且没有人在 cmet 上给出一个很好的理由来反对投票。

标签: java android android-actionbar


【解决方案1】:

一种方法是使用Toolbar 而不是默认的ActionBar。这样,您就可以在Toolbar 的右侧简单地添加一个溢出ButtonImageButton (...),您可以简单地使用onClickListener()

一个例子:

首先,声明你的Toolbar xml。

toolbar.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="ANY_HEX_COLOR"
    android:elevation="4dp">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:layout_gravity="end"
        style="@android:style/Widget.Holo.Button.Borderless"
        android:paddingBottom="10dp"
        android:paddingTop="10dp"
        android:id="@+id/bt_overflow"
        android:src="@android:drawable/ic_menu_more" />

</android.support.v7.widget.Toolbar>

稍后,通过在 style.xml 上设置 NoActionBar 主题来隐藏默认的 ActionBar。比如:

style.xml

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- ... -->
    </style>
</resources>

现在,将您的 Toolbar 添加到您的 Activity xml 文件中。

my_activity.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/rl_root"
    tools:context="com.testapp.ToolBarActivity">
    <include
        android:id="@+id/tool_bar"
        layout="@layout/toolbar"
        />

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/tool_bar"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context="com.testapp.ToolBarActivity">



        <TextView android:text="@string/hello_world" android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </RelativeLayout>
</RelativeLayout>

然后,在您的 Activity 上,使其继承自 ActionBarActivity。并设置你的监听器。

MyActivity.java

public class ToolBarActivity extends ActionBarActivity {

    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tool_bar);

        toolbar = (Toolbar) findViewById(R.id.tool_bar);

        ImageButton ib = (ImageButton) findViewById(R.id.bt_overflow);

        ib.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity();
            }
        });

        toolbar.setTitle("Test");
    }

    private void startActivity() {
        Intent it = new Intent(this,OtherActivity.class);

        startActivity(it);
    }
}

P.S.:不要忘记在你的 gradle 文件中添加支持库。

dependencies {
    compile 'com.android.support:appcompat-v7:22.2.0'
}

如果您希望 Toolbar 表现得像普通的 ActionBar,只需将此行添加到您的 onCreate()

    setSupportActionBar(toolbar);

【讨论】:

    【解决方案2】:

    我认为这是你的想法:

    edit2:

    还有一件事你必须改变:

    res-> menu-> your_menu_xml
    
    <item
            android:id="@+id/action_edit_pass"
            android:orderInCategory="100"
    

    android:showAsAction="always"

            android:title="@string/action_edit_pass"/>
    

    这会将“...”更改为您在其中写入的值。

    【讨论】:

    • 这就是我现在所拥有的。我想跳过选项菜单,直接打开另一个活动。
    • 但是你想要一个按钮......这是一个按钮,就像活动 xml 中的任何其他按钮一样,它将打开另一个活动......但在操作栏中,您必须作为设置实现按钮
    • 嗨,您可以接受这个编辑过的答案吗?因为我认为这是您在写问题时所想的。
    猜你喜欢
    • 2019-06-18
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    相关资源
    最近更新 更多