【问题标题】:Change drawer icon back to back arrow更改抽屉图标背靠背箭头
【发布时间】:2013-07-18 23:19:46
【问题描述】:

我正在使用新的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 添加到后台堆栈时,我想再次显示后退箭头,以便用户可以导航回“主页”,然后才打开应用程序抽屉。

如何将抽屉图标重置为后退图标?
我想要的箭头:

【问题讨论】:

标签: android navigation-drawer


【解决方案1】:

要禁用和隐藏 DrawerToggle “Hamburger”,只需调用

mDrawerToggle.setDrawerIndicatorEnabled(false);

【讨论】:

  • 谢谢,你能告诉我如何在 mDrawerToggle.setDrawerIndicatorEnabled(false) 之后实现点击后退动作吗?我正在尝试从内容详细信息片段返回列表视图片段。 P.S:我可以使用后退按钮转到上一个片段。
  • 非常有帮助,非常感谢!
  • 我只想更改那个汉堡包图标和它的后背图标。它们很小,离左边很近。
【解决方案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);
    }
}

然后在我的活动中...

public class MainActivity extends Activity implements SomeFragment.OnFragmentInteractionListener {

    private ActionBarDrawerToggle mDrawerToggle;

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

}

【讨论】:

  • 我怎样才能使这个'通用',所以它适用于像SomeFragment这样的许多类?还是MainActivity 必须单独实现每一个?
  • @IanB,我认为你应该创建一些类,例如 BaseFragment,实现该代码,然后扩展你想使用 Base Fragment 接口的每个片段
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-21
  • 1970-01-01
  • 2018-09-06
  • 2018-06-05
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
相关资源
最近更新 更多