我正在尝试更改NavigationVIEw的汉堡包菜单图标,但我无法这样做.
这是我到目前为止所尝试的
我有一个基本活动,其中导航抽屉设置完成.这是相关的一段代码
@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentVIEw(R.layout.activity_base_nav); setSupportActionbar(toolbar); setupDrawer();}private voID setupDrawer() { mDrawerLayout.setDrawerListener(this); mDrawerToggle = new ActionbarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close); mDrawerToggle = new ActionbarDrawerToggle(mContext, mDrawerLayout, R.string.open, R.string.close); mDrawerLayout.setDrawerListener(mDrawerToggle); if (getSupportActionbar() != null) { getSupportActionbar().setdisplayHomeAsUpEnabled(true); getSupportActionbar().setDefaultdisplayHomeAsUpEnabled(false); mDrawerToggle.setDrawerIndicatorEnabled(false); mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_share_48pt_2x); } mDrawerToggle.syncState(); mNavigationVIEw.setNavigationItemSelectedListener( menuItem -> { mMenuItem = menuItem.getItemID(); mDrawerUtil.onNavMenuItemClicked(mMenuItem); mDrawerLayout.closeDrawers(); return true; });}@OverrIDe public voID setContentVIEw(int layoutResID) { getLayoutInflater().inflate(layoutResID, mContainer);}@OverrIDeprotected voID onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState();}@OverrIDepublic voID onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig);}@OverrIDepublic boolean onoptionsItemSelected(MenuItem item) { if (mDrawerToggle.onoptionsItemSelected(item)) { return true; } return super.onoptionsItemSelected(item);}
但它似乎对我不起作用.我也试过在SupportActionbar上调用setDrawerIndicatorEnabled(false)和setHomeAsUpIndicator(R.drawable.ic_share_48pt_2x),但这也行不通.
解决方法:
以下代码对我很有用,
protected voID onCreate(Bundle savedInstanceState) { ... getSupportActionbar().setdisplayHomeAsUpEnabled(true); getSupportActionbar().setDefaultdisplayHomeAsUpEnabled(false); toggle.setDrawerIndicatorEnabled(false); toggle.setHomeAsUpIndicator(R.drawable.ic_custom_drawer_icon); ...}
我还必须添加一个工具栏导航点击监听器来监听自定义抽屉图标上的点击事件
protected voID onCreate(Bundle savedInstanceState) { ... toggle.setToolbarNavigationClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw vIEw) { DrawerLayout drawer = (DrawerLayout) findVIEwByID(R.ID.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { drawer.openDrawer(GravityCompat.START); } } }); ...}
最后,我可以动态更新图标
toggle.setHomeAsUpIndicator(R.drawable.ic_new_icon);
总结 以上是内存溢出为你收集整理的android – 更改导航抽屉汉堡包图标全部内容,希望文章能够帮你解决android – 更改导航抽屉汉堡包图标所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)