【问题标题】:Home button changing from drawer icon to up button on rotation - only when nav drawer is open主页按钮在旋转时从抽屉图标变为向上按钮 - 仅当导航抽屉打开时
【发布时间】:2017-08-14 14:46:05
【问题描述】:

我已经在我的应用程序中实现了一个抽屉式导航,并且大部分情况下它似乎工作正常。

我将主页按钮设置为导航抽屉图标(汉堡包),并且在正常旋转中仍然存在。从图 1(纵向)和图 2(旋转后的横向)中可以看出。

但是,如果我打开导航抽屉,然后旋转屏幕,然后关闭导航抽屉,主页按钮将变为向上按钮,如图 3 所示。

我尝试过改变一些东西,让它一直是汉堡包的图标,但没有运气。

我的 MainActivity 代码如下。

public class MainActivity extends AppCompatActivity {
private String[] mNavigationDrawerItemTitles;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
Toolbar toolbar;
private String mDrawerTitle;
private String mTitle;
ActionBarDrawerToggle mDrawerToggle;
private static int sNavPosition = 0;
private static final String NAV_POSITION_KEY = "navKey";
private static final String TAG = MainActivity.class.getSimpleName();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mDrawerTitle = getTitle().toString();
    mTitle = getTitle().toString();
    mNavigationDrawerItemTitles = getResources().getStringArray(R.array.drawer_fragment_items);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.left_drawer);
    setUpToolbar();
    NavDrawerItem[] navDrawerItems = new NavDrawerItem[4];

    navDrawerItems[0] = new NavDrawerItem(getString(R.string.nav_home));
    navDrawerItems[1] = new NavDrawerItem(getString(R.string.nav_aims));
    navDrawerItems[2] = new NavDrawerItem(getString(R.string.nav_arttrail));
    navDrawerItems[3] = new NavDrawerItem(getString(R.string.nav_submission));

    DrawerItemCustomAdapter adapter = new DrawerItemCustomAdapter(this, R.layout.drawer_list_item,navDrawerItems);
    View header = getLayoutInflater().inflate(R.layout.drawer_header,null);
    mDrawerList.addHeaderView(header);
    mDrawerList.setAdapter(adapter);
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerLayout.addDrawerListener(mDrawerToggle);
    setUpDrawerToggle();
    if (savedInstanceState != null && savedInstanceState.containsKey(NAV_POSITION_KEY)){
        sNavPosition = savedInstanceState.getInt(NAV_POSITION_KEY);
    }
    new DrawerItemClickListener().selectItem(sNavPosition);
}

private void setUpDrawerToggle(){
    mDrawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout,toolbar,R.string.app_name,R.string.app_name);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    mDrawerToggle.setDrawerIndicatorEnabled(true);
    mDrawerToggle.syncState();
}



@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    mDrawerToggle.syncState();
}

private void setUpToolbar(){
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

}



@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
    super.onSaveInstanceState(outState, outPersistentState);
    outState.putInt(NAV_POSITION_KEY,sNavPosition);
}

}

我已经排除了关于导航点击侦听器的不必要代码。

任何帮助或建议将不胜感激。谢谢。

【问题讨论】:

    标签: java android android-fragments android-actionbar navigation-drawer


    【解决方案1】:

    尝试从 ur
    setUpDrawerToggle();method 中删除 getSupportActionBar().setDisplayHomeAsUpEnabled(true);and
    mDrawerToggle.setDrawerIndicatorEnabled(true);

    Edit: setDisplayHomeAsUpEnabled(false) hides the default back button
    

    【讨论】:

    • 不幸的是,这不起作用,无论如何感谢您的帮助。欢迎提出更多建议
    • getSupportActionBar().setDisplayHomeAsUpEnabled(false);用于隐藏默认的后退按钮。
    • 我决定在 onDrawerClose 事件中设置 DisplayHomeAsUpEnabled(false),现在它正在工作。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多