And*_*ncz 50 android android-appcompat android-toolbar
我正在使用Appcompat V7库中的新工具栏,我正在使用导航抽屉和片段制作应用程序.
在一些片段中,我不想显示汉堡包图标而是显示箭头......我很好,我这样做:
mDrawerToggle.setDrawerIndicatorEnabled(false);
mDrawerToggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
Run Code Online (Sandbox Code Playgroud)
我的问题是:我需要如何或在哪里设置主页按钮lisener或我需要听"后退"按钮?我想调用主要的反向方法并使用汉堡包图标设置导航抽屉图标.
Raj*_*har 68
Add this method in onCreate():
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)
Then override the onOptionItemSelected() as below:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 41
你可以这样做:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
toolbar = (Toolbar)findViewById(R.id.toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
setUpNavigationDrawer();
getFragmentManager().addOnBackStackChangedListener(backStackListener); // listen to the backstack of the fragment manager
}
Run Code Online (Sandbox Code Playgroud)
定义onBackSTackChangedListener:
private FragmentManager.OnBackStackChangedListener backStackListener = new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
setNavIcon();
};
}
Run Code Online (Sandbox Code Playgroud)
根据片段的backstack设置图标:
protected void setNavIcon() {
int backStackEntryCount = getFragmentManager().getBackStackEntryCount();
drawerToggle.setDrawerIndicatorEnabled(backStackEntryCount == 0);
}
Run Code Online (Sandbox Code Playgroud)
检测何时按下抽屉图标:
public boolean onOptionsItemSelected(MenuItem item) {
if (drawerToggle.isDrawerIndicatorEnabled() && drawerToggle.onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case x:
return true;
default:
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
并处理向上按钮:
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
Run Code Online (Sandbox Code Playgroud)
这适合我.祝好运.
Jon*_*nik 31
不确定这是否适用于OP的情况,但在许多情况下,这可能是使用AppCompat工具栏实现Back按钮的最简单选项.
跳过所有的setHomeButtonEnabled,setDisplayHomeAsUpEnabled和onOptionsItemSelected东西,和相关问题.
相反,在初始化工具栏时,只需设置1)导航图标和2)导航OnClickListener:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if (enableBackNavigation) {
toolbar.setNavigationIcon(R.drawable.ic_back);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
Run Code Online (Sandbox Code Playgroud)
Sur*_*r D 16
1-创建Toolbar布局;
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/dark_blue"
android:minHeight="?attr/actionBarSize"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
Run Code Online (Sandbox Code Playgroud)
2-将其包含在您希望的布局中toolbar.
3-在活动中粘贴以下代码.(扩展ActionBarActivity)
private Toolbar mToolbar;
//For Toolbar (Action bar) start
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
mToolbar.setNavigationIcon(R.drawable.ic_back_arrow);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
getSupportActionBar().setTitle("Event Details");
//For Toolbar (Action bar) end
Run Code Online (Sandbox Code Playgroud)
4-将后退单击图标更改为您想要的任何内容.
| 归档时间: |
|
| 查看次数: |
85556 次 |
| 最近记录: |