2013-12-11 32 views
0

我有一个Navigation Drawer问题。
在我的导航抽屉应用程序中,有时抽屉会显示在其他内容视图的后面。所以只显示抽屉的一部分(其他部分被内容区域隐藏)。Android导航抽屉(DrawerLayout)被内容视图隐藏

我尝试了一切,但它不起作用。

drawer.bringToFront(); 
    drawer.buildLayer(); 
    drawer.clearFocus(); 
    drawer.requestLayout(); 
    drawer.forceLayout(); 

但是在这种情况下,如果我触摸选项按钮或改变焦点,屏幕刷新并且它很好地显示抽屉。 所以我想知道什么样的方法被称为当我触摸选项按钮。然后,我想我可以在抽屉打开时调用该方法。

非常感谢你的高级。

+0

发布包含主要内容视图和导航抽屉的布局XML文件。 – Squonk

+0

@Squonk,对不起。我无法上传XML,该应用程序已商业化并包含许多视图:( – nayeong

+0

除非您发布相关代码/布局文件以重现该问题,否则没有人能够为您提供帮助。 – Squonk

回答

0

我张贴示例代码尝试检查您的代码。

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

    <RelativeLayout 
     android:id="@+id/relative_home" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/tile_image_data" > 


     <android.support.v4.view.ViewPager 
      android:id="@+id/viewpager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="48dip" > 
     </android.support.v4.view.ViewPager> 
    </RelativeLayout> 

    <ListView 
     android:id="@+id/drawer" 
     android:layout_width="240dp" 
     android:layout_height="fill_parent" 
     android:layout_gravity="right" 
     android:cacheColorHint="#00000000" 
     android:divider="#19000000" 
     android:background="@drawable/tile_image_data" 
     android:choiceMode="singleChoice" /> 

</android.support.v4.widget.DrawerLayout> 
0

我有同样的问题。我通过将android:id中的FrameLayout@android:id/content更改为@+id/content来解决问题。显然,使用系统资源ID并不总是一个好主意。

0

我有同样的问题。当主视图调用onWindowsFocusChange()时,抽屉在主视图后面打开。这发生在Unity3D视图中。 我已经解决了函数 onDrawerSlide(View drawerView, float slideOffset) 中调用的问题,它是DrawerListener,drawerView.bringToFront()中的一个方法。

0

我有同样的问题,但它似乎只发生在KITKAT之前的版本。由于@jack,我更新的代码之后后,它是确定:

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, 
      R.string.drawer_close) { 
     @Override 
     public void onDrawerSlide(View drawerView, float slideOffset) { 
      super.onDrawerSlide(drawerView, slideOffset); 

      if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { 
       drawerView.bringToFront(); 
       getWindow().getDecorView().requestLayout(); 
       getWindow().getDecorView().invalidate(); 
      } 
     } 
    }; 

你可能想知道为什么我调用requestLayout()和无效(),只是看到bringToFront的文档()。