给AppCompatActivity的标题栏上加上返回按钮

本文介绍如何在AppCompatActivity中添加返回按钮。通过设置ActionBar的方法,使Activity标题栏具备返回功能,并提供完整示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给AppCompatActivity的标题栏上加上返回按钮

目前基于android6.0版本sdk并通过android studio创建的空Activity默认都是继承自AppCompatActivity。

选择空Activity并创建

在默认情况下,这个Activity在标题栏上是没有返回按钮的,如下图所示:

默认显示效果

此时如果需要给AppCompatActivity的标题栏上加上返回按钮,可以在Activity的onCreate中加入如下代码:

    android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    if(actionBar != null){
        actionBar.setHomeButtonEnabled(true);
        actionBar.setDisplayHomeAsUpEnabled(true);
    }

在onOptionsItemSelected中加入如下代码:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                this.finish(); // back button
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

运行效果,如下:

加上返回键的效果

完整的示例代码如下:

package com.toby.personal.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {

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

        android.support.v7.app.ActionBar actionBar = getSupportActionBar();
        if(actionBar != null){
            actionBar.setHomeButtonEnabled(true);
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                this.finish(); // back button
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

}
### 如何在 Android X 中实现标题栏返回按钮功能 要在 Android X 中实现带有返回按钮标题栏功能,可以使用 `setSupportActionBar` 和 `getSupportActionBar()` 方法来自定义工具栏 (Toolbar),并设置返回箭头的行为。以下是具体方法: #### 自定义 Toolbar 并启用返回按钮 通过创建一个自定义 Toolbar,在 Activity 的布局文件中将其作为标题栏替代默认 ActionBar。 ```xml <!-- activity_main.xml --> <androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:titleTextColor="#FFFFFF"/> ``` 接着,在 Java 或 Kotlin 文件中初始化 Toolbar,并配置其行为。 ```java // MainActivity.java import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化 Toolbar Toolbar myToolbar = findViewById(R.id.my_toolbar); setSupportActionBar(myToolbar); // 启用返回按钮 getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); // 设置标题 setTitle("我的标题"); } // 处理返回按钮点击事件 @Override public boolean onSupportNavigateUp() { onBackPressed(); // 执行返回逻辑 return true; } } ``` 上述代码实现了以下几点: - 将自定义 Toolbar 替代默认 ActionBar[^2]。 - 使用 `setDisplayHomeAsUpEnabled(true)` 显示返回箭头。 - 定义 `onSupportNavigateUp()` 方法处理返回按钮的点击动作[^3]。 #### 可选扩展:右侧菜单项支持 如果需要在标题栏上增加额外的操作按钮(如“完成”),可以在 Toolbar 上绑定 Menu 菜单资源。 ```xml <!-- menu/main_menu.xml --> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_done" android:title="完成" android:icon="@drawable/ic_check_black_24dp" android:showAsAction="ifRoom|withText" /> </menu> ``` 然后重载 `onCreateOptionsMenu` 和 `onOptionsItemSelected` 方法以响应菜单项点击。 ```java @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_done: Toast.makeText(this, "点击了完成按钮", Toast.LENGTH_SHORT).show(); return true; default: return super.onOptionsItemSelected(item); } } ``` 以上代码展示了如何添加右侧操作按钮以及对应的交互逻辑。 --- ### 注意事项 1. **兼容性问题**:确保项目已迁移到 Android X,因为部分旧版组件可能不支持新特性[^5]。 2. **主题适配**:Activity 主题应继承自 `Theme.AppCompat.Light.DarkActionBar` 或无 ActionBar 版本的主题,以便正确显示 Toolbar。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值