2014-05-16 41 views
7

我的Android應用程序是全屏OpenGL ES 2.0應用程序,因此主要內容是GLSurfaceView的自定義擴展。 活動佈局看起來是這樣的:DrawerLayout ListView未使用GLSurfaceView作爲內容繪製

<android.support.v4.widget.DrawerLayout 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:id="@+id/drawer_layout"> 
    <FrameLayout android:id="@+id/content_frame" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" /> 
    <ListView android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#111" /> 
</android.support.v4.widget.DrawerLayout> 

然後我用的FrameLayout的addView方法添加我的GLSurfaceView。 如果我不這樣做,抽屜按預期工作。

ListView似乎被正確拔出時,我滑過它,因爲我不能與GLSurfaceView交互,直到我向左滑動它。但它根本沒有顯示,就像GLSurfaceView在其上面顯示一樣。

如何獲取DrawerLayout作爲其內容使用GLSurfaceView?

回答

16

我剛剛面臨同樣的問題,我發現它非常愚蠢的解決方法。這個問題似乎隻影響DrawerLayouts,而不是常規視圖。因此,只需在您的GLSurfaceView上放置一個空視圖,即可將其遠離抽屜。

這裏是我的精簡配置文件作爲樣品給你:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawerLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <GLSurfaceView 
      android:id="@+id/glSurfaceView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

     <View 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 
    </RelativeLayout> 


    <FrameLayout 
     android:id="@+id/frameLayoutDrawer" 
     android:layout_width="@dimen/navigation_drawer_width" 
     android:layout_height="match_parent" 
     android:layout_gravity="end" 
     android:background="@android:color/white" /> 
</android.support.v4.widget.DrawerLayout> 
+1

你先生贏得了自己的聲譽,奇妙的作品! 對於那些動態添加他們的GL視圖的人來說,只需將它添加到具有索引的ViewGroup中即可。像這樣:'myRelativeLayout.addView(myGlView,0);' – avalancha