如果某个活动存在操作栏(有时称为应用程序栏),它将位于活动内容区域的顶部,通常直接在状态栏的下方。它是一个菜单栏,贯穿于Android活动屏幕的顶部。 Android ActionBar可以包含菜单项,这些菜单项在用户单击“菜单”按钮时变为可见。通常,ActionBar由以下四个组件组成:
- 应用程序图标:应用程序品牌徽标或图标将显示在此处
- 视图控件:一个专用的空间,用于显示应用程序标题。还提供了通过添加微调器或选项卡式导航在视图之间切换的选项
- 动作按钮:可以在此处添加应用的主要动作
- 动作溢出:所有不重要的动作都将显示为菜单
下面是一个示例图像,用于显示操作栏/工具栏/应用栏在android设备上的位置。
操作栏是活动内部的主要工具栏,可用于显示活动标题和其他交互式项目。最常用的项目之一是“后退导航”按钮。后退按钮用于从用户先前访问的屏幕向后移动。大多数Android设备都有专用的后退按钮,操作栏上的后退按钮仍然可以增强用户体验。
在操作栏中添加“后退”按钮
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。无需更改activity_main.xml文件中的任何内容。我们唯一需要处理的文件是使用MainActivity文件。
- 在Java / kotlin文件中创建操作栏变量并调用函数getSupportActionBar() 。
- 使用actionBar.setDisplayHomeAsUpEnabled(true)显示后退按钮,这将启用后退按钮。
- 在onOptionsItemSelected处定制back事件。这将使按下按钮的后退函数生效。请参阅以下代码以供参考。我们已经为MainActivity提供了Java和kotlin代码。
Java
import android.os.Bundle;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// calling the action bar
ActionBar actionBar = getSupportActionBar();
// showing the back button in action bar
actionBar.setDisplayHomeAsUpEnabled(true);
}
// this event will enable the back
// function to the button on press
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}
Kotlin
import android.os.Bundle
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// calling the action bar
var actionBar = getSupportActionBar()
// showing the back button in action bar
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true)
}
}
// this event will enable the back
// function to the button on press
override fun onContextItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
finish()
return true
}
}
return super.onContextItemSelected(item)
}
}
Java
import android.os.Bundle;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// calling the action bar
ActionBar actionBar = getSupportActionBar();
// Customize the back button
actionBar.setHomeAsUpIndicator(R.drawable.mybutton);
// showing the back button in action bar
actionBar.setDisplayHomeAsUpEnabled(true);
}
// this event will enable the back
// function to the button on press
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}
Kotlin
import android.os.Bundle
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// calling the action bar
var actionBar = getSupportActionBar()
if (actionBar != null) {
// Customize the back button
actionBar.setHomeAsUpIndicator(R.drawable.mybutton);
// showing the back button in action bar
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
// this event will enable the back
// function to the button on press
override fun onContextItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
finish()
return true
}
}
return super.onContextItemSelected(item)
}
}
输出:
自定义操作栏中的后退按钮
通过使用getSupportActionBar()库并使用Java/ kotlin文件中的setHomeAsUpIndicator设置可绘制文件,我们可以轻松地自定义“后退按钮”。
// Customize the back button
actionBar.setHomeAsUpIndicator(R.drawable.mybutton);
完整的代码如下。
Java
import android.os.Bundle;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// calling the action bar
ActionBar actionBar = getSupportActionBar();
// Customize the back button
actionBar.setHomeAsUpIndicator(R.drawable.mybutton);
// showing the back button in action bar
actionBar.setDisplayHomeAsUpEnabled(true);
}
// this event will enable the back
// function to the button on press
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}
科特林
import android.os.Bundle
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// calling the action bar
var actionBar = getSupportActionBar()
if (actionBar != null) {
// Customize the back button
actionBar.setHomeAsUpIndicator(R.drawable.mybutton);
// showing the back button in action bar
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
// this event will enable the back
// function to the button on press
override fun onContextItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
finish()
return true
}
}
return super.onContextItemSelected(item)
}
}