You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何修改Navigation Drawer的Toggle颜色?

修改Navigation Drawer Toggle箭头颜色的几种方法

嘿,我看你在Android Studio里开发带Navigation Drawer的项目,想改Toggle的箭头颜色,结合你的代码给你整理了几个实用的方法:

方法一:在代码中直接修改Toggle的Drawable颜色

这个方法适合只需要在单个Activity里修改的场景,步骤很简单:

  1. 首先确保你正确初始化了ActionBarDrawerToggle,如果布局里有Toolbar,建议把Toolbar传给Toggle构造函数(关联更紧密)。
  2. 获取Toggle自带的DrawerArrowDrawable,然后设置你想要的颜色。

修改你onCreate方法里的相关代码,去掉之前覆盖Home图标的那几行(getSupportActionBar().setHomeAsUpIndicator(upArrow)这些会干扰Toggle的图标),替换成下面的逻辑:

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

    // 初始化Toolbar(如果布局里有Toolbar的话)
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    mDrawerlayout = (DrawerLayout) findViewById(R.id.drawerLayout);
    // 把Toolbar传入Toggle构造函数,让它自动关联顶部导航
    mToggle = new ActionBarDrawerToggle(this, mDrawerlayout, toolbar, R.string.Open, R.string.Close);
    mDrawerlayout.addDrawerListener(mToggle);

    // 重点:修改Toggle箭头的颜色
    DrawerArrowDrawable toggleDrawable = mToggle.getDrawerArrowDrawable();
    // 可以用颜色资源,也可以直接解析十六进制颜色
    toggleDrawable.setColor(getResources().getColor(R.color.black));
    // 或者用 toggleDrawable.setColor(Color.parseColor("#000000"));

    final WebView wv = findViewById(R.id.wv);

    mToggle.syncState(); // 同步Toggle状态,这行不能丢

    wv.setWebViewClient(new WebViewClient());
    wv.getSettings().setJavaScriptEnabled(true);
    wv.loadUrl("http://www.parabolaindo.com");

    // 剩下的NavigationView逻辑保持不变...
}

方法二:通过主题样式全局修改

如果你希望整个App里的所有Navigation Drawer Toggle都用同一个颜色,用主题样式的方法更高效:

打开res/values/styles.xml,修改你的App主题,添加drawerArrowStyle属性:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- 其他已有的属性保持不变 -->
    <item name="drawerArrowStyle">@style/CustomDrawerArrowStyle</item>
</style>

<!-- 自定义Toggle样式 -->
<style name="CustomDrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="color">@color/black</item> <!-- 这里设置你要的颜色 -->
</style>

这样所有使用AppTheme主题的Activity,它们的Navigation Drawer Toggle都会自动变成你设置的颜色,不用在每个Activity里写重复代码。

注意事项

  • 如果你之前用了getSupportActionBar().setHomeAsUpIndicator()来设置Home图标,记得把这部分代码删掉,因为它会覆盖Toggle的默认箭头,导致颜色修改不生效。
  • 如果你用的是AndroidX库,getResources().getColor()可以替换成ContextCompat.getColor(this, R.color.black),兼容性更好。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:34:58