我的主要活动中设置了导航抽屉。在我的一个片段中,我想隐藏汉堡包图标并显示后退箭头(已实现)
ActionBar bar = mMainActivity.getSupportActionBar();
bar.setDisplayShowHomeEnabled(true);
bar.setDisplayHomeAsUpEnabled(true);
bar.setDefaultDisplayHomeAsUpEnabled(true);
问题是如果我点击它打开抽屉的箭头。所以我添加了这个:mMainActivity.mActionBarDrawerToggle.setDrawerIndicatorEnabled(false);
问题是当我添加此行时,不会显示任何内容。抽屉图标和后退或上移图标。那么有谁能告诉我我做错了什么。?
修改
对于我所做的和未完成的事情似乎有些困惑。 mMainActivity.mActionBarDrawerToggle.setDrawerIndicatorEnabled(false);
暂时添加,我再次将其删除,就像我一样,没有图标显示导航抽屉或后退箭头。
以下是我处理菜单项点击的方式:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()){
case R.id.search_badge:
L.i("search", "search");
return false;
case android.R.id.home:
L.i("home", "home pressed");
break;
case R.id.action_done:
actionDone();
//for testing
//checkSelectedInterests();
//TODO: MLC
L.i("done", "done pressed");
break;
default:
;;
}
return super.onOptionsItemSelected(item);
}
然而
case android.R.id.home:
L.i("home", "home pressed");
break;
从未被击中
我希望这能澄清它。因此,此时导航抽屉图标正在隐藏,并显示后退箭头。当我单击后退箭头时,它会打开导航抽屉而不是输入我的开关盒。
答案 0 :(得分:1)
因此,您的问题分为两部分:
仅显示主页按钮:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Drawable homeMenu = getResources().getDrawable(R.drawable.ic_menu_white_24dp);
getSupportActionBar().setHomeAsUpIndicator(homeMenu);
getSupportActionBar().setHomeButtonEnabled(true);
显示后退箭头而不是主页:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
upArrow.setColorFilter(getResources().getColor(R.color.fab_material_white), PorterDuff.Mode.SRC_ATOP);
getSupportActionBar().setHomeAsUpIndicator(upArrow);
这只会更改显示的图像。
更改汉堡包图标的行为。在您要更改主页按钮行为的活动中,更改菜单项的onclick,如图所示onBackPressed()
:
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
保持原样导航抽屉的原样。希望这可以帮助。这就是我为我的应用做的。
编辑:
移除mMainActivity.mActionBarDrawerToggle.setDrawerIndicatorEnabled(false);
,然后继续回答的第二部分,执行onBackPressed()
,而不是默认的汉堡包功能。
答案 1 :(得分:-1)
听起来你错误地设置了一些东西。看看这个教程,它可以帮助你弄清楚你错过了什么。
编辑这实际上是链接中的第一句话。要使up
按钮起作用,您需要在清单中设置父活动。
要实现向上导航,第一步是声明哪个 活动是每个活动的适当父级。这样做允许 系统方便导航模式如Up因为 系统可以从清单中确定逻辑父活动 文件。
<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>