You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于Android Studio底部导航Activity,如何修改顶部栏(加图标、改颜色)?

解决方案:在Bottom Navigation Activity的顶部栏添加图标并修改颜色

一、修改顶部栏颜色

最简单也最符合Material Design规范的方式是通过主题配置修改:

  1. 打开res/values/themes目录下的主题文件(通常是Theme.YourAppName.xml
  2. <style>标签里找到colorPrimary属性,替换成你想要的颜色代码即可,比如:
<item name="colorPrimary">#FF6200EE</item>

如果需要适配深色主题,就去对应的Theme.YourAppName.Dark.xml文件里修改相同属性。

要是你需要动态切换顶部栏颜色(比如随页面变化),也可以在代码里这么写:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FF6200EE")));

二、在顶部栏添加跳转图标(右侧操作按钮)

要实现点击图标跳转到非底部导航的Fragment,推荐用Options Menu的方式,步骤很清晰:

  1. 创建顶部栏菜单文件
    res/menu目录下新建top_app_bar_menu.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_go_custom_fragment"
        android:icon="@drawable/your_icon_file" <!-- 替换成你的图标文件名 -->
        android:title="跳转到自定义Fragment"
        app:showAsAction="always" /> <!-- 让图标始终显示在顶部栏 -->
</menu>
  1. 在MainActivity中加载菜单
    重写onCreateOptionsMenu方法,加载刚才创建的菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.top_app_bar_menu, menu);
    return true;
}
  1. 处理图标点击跳转逻辑
    重写onOptionsItemSelected方法,实现跳转:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.action_go_custom_fragment) {
        // 获取导航控制器实例
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        // 跳转到目标Fragment,记得先在nav_graph.xml里添加这个Fragment的节点
        navController.navigate(R.id.your_custom_fragment_id);
        return true;
    }
    return super.onOptionsItemSelected(item);
}
  1. 在导航图中添加目标Fragment
    打开res/navigation/nav_graph.xml,添加你的自定义Fragment节点:
<fragment
    android:id="@+id/your_custom_fragment_id"
    android:name="com.your.package.YourCustomFragment"
    android:label="自定义Fragment" />

额外小技巧:把图标放在顶部栏左侧

如果想让图标出现在标题左侧(比如作为应用logo),可以在MainActivity的onCreate方法里加这段代码:

ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
    actionBar.setDisplayShowHomeEnabled(true);
    actionBar.setIcon(R.drawable.your_icon_file);
    // 不需要默认返回箭头的话可以关闭它
    actionBar.setDisplayHomeAsUpEnabled(false);
}

不过操作类图标还是更推荐放在右侧,符合用户的操作习惯哦。

内容的提问来源于stack exchange,提问作者Kharin1986

火山引擎 最新活动