2013-03-25 54 views
1

我在我的项目中使用jfeinstein10滑动菜单库,一切工作正常,只是当我在某些设备上运行我的应用程序时,在包含listview的片段顶部有一个空白区域,这里是一个事先知情同意:滑动菜单白色空间

enter image description here

这里是我设置的滑动菜单代码:

setBehindContentView(R.layout.menu_frame); 
    FragmentTransaction fragTransaction = mFragmentManager.beginTransaction(); 
    fragMenu = new FragmentMenu(); 
    fragTransaction.replace(R.id.menu_frame, fragMenu); 
    fragTransaction.commit(); 

    SlidingMenu sm = getSlidingMenu(); 
    sm.setShadowWidthRes(R.dimen.shadow_width); 
    sm.setShadowDrawable(R.drawable.shadow); 
    sm.setBehindOffsetRes(R.dimen.actionbar_home_width); 
    setSlidingActionBarEnabled(true); 

    final ActionBar mActionBar = getSupportActionBar(); 
    mActionBar.setHomeButtonEnabled(true); 
    mActionBar.setDisplayHomeAsUpEnabled(true); 

,这将是我的片段布局的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@color/fondoRowsMenuIzquierdo" > 

<ExpandableListView 
    android:id="@+id/expListView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:cacheColorHint="@color/fondoRowsMenuIzquierdo" 
    android:childDivider="@color/fondoRowsChildMenuIzquierdo" 
    android:choiceMode="singleChoice" 
    android:divider="@color/separadoresMenuIzquierdo" 
    android:dividerHeight="1dp" 
    android:drawSelectorOnTop="true" 
    android:groupIndicator="@null" /> 

</LinearLayout> 

有谁知道如何删除该空白?

+0

请出示您的布局xml文件 – hakiko 2013-03-25 21:11:28

回答

1

我解决了这个问题,更新到最新的SlidingMenu库:https://github.com/jfeinstein10/SlidingMenu。但此更新还带来另一个问题。

在SlidingMenu.java有这段代码:

public void manageLayers(float percentOpen) { 
    if (Build.VERSION.SDK_INT < 11) return; 

    boolean layer = percentOpen > 0.0f && percentOpen < 1.0f; 
    final int layerType = layer ? View.LAYER_TYPE_HARDWARE : View.LAYER_TYPE_NONE; 

    if (layerType != getContent().getLayerType()) { 
     mHandler.post(new Runnable() { 
      public void run() { 
       Log.v(TAG, "changing layerType. hardware? " + (layerType == View.LAYER_TYPE_HARDWARE)); 
       getContent().setLayerType(layerType, null); 
       getMenu().setLayerType(layerType, null); 
       if (getSecondaryMenu() != null) { 
        getSecondaryMenu().setLayerType(layerType, null); 
       } 
      } 
     }); 
    } 

如果您使用的蜂窝状或以前版本的API这个库的代码不会让你在滑动菜单与视图交互,你哟改变这个验证:

if (Build.VERSION.SDK_INT < 11) return; 

此:

if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2)return; 
+0

好,但我们怎么能解决这个问题采用最​​新的lib ? – alicanbatur 2013-07-13 09:36:45

0

对我来说colors.xml的UE它的工作如下:

在你的项目/.../ slidingmenu/src目录/ com.slidingmenu.lib/SlidingMenu.java

protected boolean fitSystemWindows(Rect insets) { 

那里有

int topPadding = getPaddingTop() + insets.top; 
int bottomPadding = getPaddingBottom() + insets.bottom; 

添加以下内容:

if (Build.VERSION.SDK_INT >= 21) { 
    topPadding = insets.top; 
} 

如果您的问题存在,您可以修复bottomPadding或任何其他填充。如果你的问题是关系到一个底部导航栏,你可以检查高度和修复填充在同一文件中添加此:

if (Build.VERSION.SDK_INT >= 21) { 
     Resources resources = getContent().getResources(); 
     int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); 
     if (resourceId > 0) { 
      bottomPadding += resources.getDimensionPixelSize(resourceId); 
     } 
    }