相关疑难解决方法(0)

使用片段时,在Android导航抽屉图像和向上插入符之间切换

当使用导航抽屉时,Android开发人员建议在ActionBar中"只有那些在导航抽屉中表示的屏幕应该实际上具有导航抽屉图像",并且"所有其他屏幕都具有传统的向上克拉".

详情请见:http://youtu.be/F5COhlbpIbY

我正在使用一个活动来控制多个级别的片段,并且可以使导航抽屉图像在所有级别上显示和运行.

创建较低级别的片段时,我可以调用ActionBarDrawerToggle setDrawerIndicatorEnabled(false)隐藏导航抽屉图像并显示向上插入符号

LowerLevelFragment lowFrag = new LowerLevelFragment();

//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout, 
lowFrag, "lowerFrag").addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是当我导航回到最高级别的片段时,向上克拉仍然显示而不是原始的导航抽屉图像.有关如何"刷新"顶级片段上的ActionBar以重新显示导航抽屉图像的任何建议?


汤姆的建议对我有用.这是我做的:

主要活动

此活动控制应用程序中的所有片段.

在准备新片段以替换其他片段时,我将DrawerToggle设置为setDrawerIndicatorEnabled(false):

LowerLevelFragment lowFrag = new LowerLevelFragment();

//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout,   
lowFrag).addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)

接下来,在覆盖中onBackPressed,我通过将DrawerToggle设置为这样来恢复上面的内容setDrawerIndicatorEnabled(true):

@Override
public void onBackPressed() {
    super.onBackPressed();
    // turn on the Navigation Drawer image; 
    // this is called in the LowerLevelFragments
    setDrawerIndicatorEnabled(true)
}
Run Code Online (Sandbox Code Playgroud)

在LowerLevelFragments中

在我修改过的片段中onCreate, …

android android-fragments android-actionbar navigation-drawer

177
推荐指数
6
解决办法
7万
查看次数

无法捕获工具栏主页按钮单击事件

我已经实现了最新的appcompat库并使用了Toolbaras操作栏.但问题是我无法抓住主页按钮/汉堡包图标点击事件.我试过看了一切,但似乎没有找到类似的问题.

这是我的Activity班级:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // Set up the drawer.
    navDrawerFragment = 
        (NavigationDrawerFragment) getSupportFragmentManager()
        .findFragmentById(R.id.navigation_drawer);
    navDrawerFragment.setUp(
        R.id.navigation_drawer, 
        (DrawerLayout) findViewById(R.id.drawer_layout), 
        toolbar);
}
Run Code Online (Sandbox Code Playgroud)

这是我的NavigationDrawerFragment类:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) {
        currentSelectedPosition = savedInstanceState.getInt(
            STATE_SELECTED_POSITION);
        fromSavedInstanceState = true;
    }

    // Select either the default item (0) or the last selected item.
    selectItem(currentSelectedPosition);
}

@Override
public void onActivityCreated (Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    // Indicate that this …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer android-toolbar

103
推荐指数
3
解决办法
11万
查看次数

导航抽屉 - 禁用滑动

有没有办法禁用滑动手势打开导航抽屉?当在标签之间滑动时出现菜单时,它真的很烦人.

android

84
推荐指数
1
解决办法
3万
查看次数

更改抽屉图标背对背箭头

我正在使用新的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);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我Fragment向backstack 添加一个时,我想再次显示后退箭头,这样用户就可以导航回"home",然后才打开app抽屉.

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

导航抽屉

android navigation-drawer

43
推荐指数
1
解决办法
4万
查看次数

Android棒棒糖工具栏在打开/关闭抽屉和后退按钮之间切换

我有标准导航抽屉,但现在我正在尝试使用工具栏修改它.

之前我的代码看起来像: MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Log.v("MAIN", "CREATE");
    initViews();
    setListeners();

    getFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
        @Override
        public void onBackStackChanged() {
            shouldDisplayHomeUp();
        }
    });

    mNavigationDrawerFragment = (NavigationDrawerFragment)
            getFragmentManager().findFragmentById(R.id.navigation_drawer);
    mTitle = getTitle();

    // Set up the drawer.
    mNavigationDrawerFragment.setUp(
            R.id.navigation_drawer,
            (DrawerLayout) findViewById(R.id.drawer_layout));
}
Run Code Online (Sandbox Code Playgroud)

NavigationDrawerFragment.java

public void setUp(int fragmentId, DrawerLayout drawerLayout) {
    mFragmentContainerView = getActivity().findViewById(fragmentId);
    mDrawerLayout = drawerLayout;

    mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

    ((MainActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    ((MainActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);

    mDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout,
            ((MainActivity) getActivity()).getToolbar(),
            R.string.navigation_drawer_open,
            R.string.navigation_drawer_close) {
        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView); …
Run Code Online (Sandbox Code Playgroud)

navigation android android-appcompat navigation-drawer android-toolbar

9
推荐指数
1
解决办法
2万
查看次数