将抽屉图标改回后退箭头

44

我正在使用新的DrawerLayout来实现侧边导航。我是这样使用抽屉图标(汉堡包图标)的:

@Override
protected void onStart() {
    super.onStart();

    mDrawerLayout = (DrawerLayout) findViewById(R.id.activity_main_drawerlayout);
    mDrawerToggle = new ActionBarDrawerToggle(
            this, 
            mDrawerLayout, 
            R.drawable.ic_navigation_drawer, 
            R.string.app_name, 
            R.string.app_name);
    mDrawerLayout.setDrawerListener(mDrawerToggle);

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);
}
然而,当我将Fragment添加到backstack时,我想再次显示返回箭头,以便用户可以返回到“主页”,然后才打开应用程序抽屉。
我如何将抽屉图标重置为返回图标?
我需要的箭头:
Navigation Drawer

1
请查看我的答案,链接在这里:https://dev59.com/wuo6XIcBkEYKwwoYGwUw#29292130 - mixel
2个回答

73

要禁用和隐藏抽屉开关“汉堡包图标”,只需调用以下函数:

mDrawerToggle.setDrawerIndicatorEnabled(false);

3
谢谢,你需要告诉我如何在mDrawerToggle.setDrawerIndicatorEnabled(false)之后实现单击返回操作?我尝试从内容详情片段返回到列表视图片段。 附注:我可以使用返回按钮回到先前的片段。 - adnanyousafch
2
@adnanyousafch https://dev59.com/aGQm5IYBdhLWcg3w4CTA - LOG_TAG
非常有帮助,非常感谢! - Seyyed
我只想改变那个汉堡图标和它的返回图标。它们太小了,而且离左侧非常接近。 - Dr.jacky

2

我为托管活动创建了一个接口,用于更新汉堡菜单的视图状态。对于顶级片段,我将切换设置为true,对于需要显示向上箭头的片段,我将切换设置为false

public class SomeFragment extends Fragment {

    public interface OnFragmentInteractionListener {
        public void showDrawerToggle(boolean showDrawerToggle);
    }

    private OnFragmentInteractionListener mListener;

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            this.mListener = (OnFragmentInteractionListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement OnFragmentInteractionListener");
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        mListener.showDrawerToggle(false);
    }
}

然后在我的Activity中...
public class MainActivity extends Activity implements SomeFragment.OnFragmentInteractionListener {

    private ActionBarDrawerToggle mDrawerToggle;

    public void showDrawerToggle(boolean showDrawerIndicator) {
        mDrawerToggle.setDrawerIndicatorEnabled(showDrawerIndicator);
    }

}

1
我该如何使它“通用化”,以便适用于许多类似SomeFragment的类?还是MainActivity必须逐个实现每个类? - IanB
@IanB,我认为你应该创建一个类,例如BaseFragment,实现该代码,然后使用Base Fragment扩展您想要使用该接口的每个片段。 - WardaLyn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接