如何将返回按钮放置在我的ActionBar左侧

4

我正在开发和完善一款Android App,这是我需要解决的主要问题之一。

所以,我有一个像这样风格的Action Bar:

<resources>
    <style name="MyCustomTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/MyActionBarTheme</item>
    </style>

    <style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">#F6E6E7</item>
        <item name="android:textSize">10sp</item>
    </style>

    <style name="CustomTabWidget">
        <item name="android:textSize">15sp</item>
    </style>


</resources>

这是我放置按钮的布局

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Search, should appear as action button -->

    <item android:id="@+id/voltar"
        android:title="Voltar"
        android:icon="@drawable/abc_ic_ab_back_holo_light"
        android:showAsAction="ifRoom" />
    <!-- Settings, should always be in the overflow -->

</menu>

这个名为“Voltar”的按钮位于操作栏右侧。我应该怎样才能把它放到左侧呢?

感谢您的阅读。


我认为选项菜单不是实现返回按钮的最佳方式。您想让返回按钮导航到父活动吗? - Rodrigo Borges
3个回答

6

你需要做两件事情。首先,在你的活动的onCreate中声明它。

getActionBar().setDisplayHomeAsUpEnabled(true);

然后实现onOptionsItemSelected方法,以便处理“向上”按钮的点击事件

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home ) {
        finish();
        return true;
    }
    // other menu select events may be present here

    return super.onOptionsItemSelected(item);
}

4
如果您使用AppCompatActivity而不是android.app.Activity,则需要使用getSupportActionBar()。 - Ruslan Berozov

5

在您的活动的onCreate中声明getActionBar().setDisplayHomeAsUpEnabled(true);是正确的。

然而,Nayan在上面的帖子中建议的onOptionsItemSelected实现可以改进,并应按照以下代码处理:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == android.R.id.home) {
        NavUtils.navigateUpFromSameTask(this);
//            finish();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

id android.R.id.home代表主页或返回按钮。声明 getActionBar().setDisplayHomeAsUpEnabled(true); 将显示 UP (Back/Left Arrow) 按钮。使用 NavUtils 允许用户在应用程序结构中向上导航一级。

有关更多详细信息,请参阅 Android Design 上的导航模式: http://developer.android.com/design/patterns/navigation.html#up-vs-back


1
默认情况下,Android支持返回按钮。 您无需手动创建该按钮。 只需在Activity的onCreate()方法中实现即可。
getActionBar().setDisplayHomeAsUpEnabled(true);

好的。我现在几乎爱上了你。谢谢! - Eric Teixeira

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