2014-07-09 82 views
1

我已经在我的DrawerLayout如下:DrawerLayout背景的ListView

<?xml version="1.0" encoding="utf-8"?> 

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

    <!-- Framelayout to display Fragments --> 
    <FrameLayout 
     android:id="@+id/frame_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <!-- Listview to display slider menu --> 
    <ListView 
     android:id="@+id/list_slidermenu" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="@drawable/background" 
     android:choiceMode="singleChoice" 
     android:divider="@color/transparent" 
     android:dividerHeight="0dp" /> 

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

我想有一个背景图像我ListView用在它上面的黑色认为具有一定的不透明度。对于我的iPhone应用程序来说,这非常简单 - 我只有UIImageView,顶部有UIView,背景为黑色,透明度为.4,一切正常。

有没有办法在Android中做到这一点?此外,这个图像将从服务器上下载...所以我也需要适应这个约束。

编辑

我试着按下面的第一个答案,并得到了以下错误:

Process: com.mounzaapp, PID: 17534 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mounzaapp/com.mounzaapp.views.dashboard.DashboardFragmentActivity}: java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5001) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams 
     at android.support.v4.widget.DrawerLayout.isDrawerView(DrawerLayout.java:857) 
     at android.support.v4.widget.DrawerLayout.closeDrawer(DrawerLayout.java:1058) 
     at com.mounzaapp.views.dashboard.DashboardFragmentActivity.onItemClick(DashboardFragmentActivity.java:257) 
     at com.mounzaapp.views.dashboard.DashboardFragmentActivity.onCreate(DashboardFragmentActivity.java:148) 
     at android.app.Activity.performCreate(Activity.java:5231) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 

做时,我得到的错误:drawerLayout.closeDrawer(listLayout);listLayout是包含ListViewRelativeLayout

EDIT 2

打开了所有我需要做的就是从我的Android设备上删除应用程序,然后重建。一切工作!

+0

你有没有尝试添加你的'ListView'到'Layout'并相应设置此'Layout'的背景? – Ammar

回答

1

您只能在DrawerLayout内放置两个子视图,但您可以将ListView置于RelativeLayout之内。就像这样:

<?xml version="1.0" encoding="utf-8"?> 

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

    <!-- Framelayout to display Fragments --> 
    <FrameLayout 
     android:id="@+id/frame_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <!-- RelativeLayout to display slider menu --> 
    <RelativeLayout 
     android:id="@+id/drawer_container" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="@drawable/background" > 

     <ListView 
      android:id="@+id/list_slidermenu" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:background="@drawable/background" 
      android:choiceMode="singleChoice" 
      android:divider="@color/transparent" 
      android:dividerHeight="0dp" /> 

     <!-- Whatever view you want inside the RelativeLayout --> 

    </RelativeLayout> 

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

**** ****编辑

Only two child view in DrawerLayout reference

+0

我有问题关闭与上面的代码抽屉......并且我的应用程序不会启动:(。把错误放在我的问题上。 – KVISH

+0

请显示如何在您的Activity中集成'DrawerLayout'的代码。你错误日志:'android.widget.RelativeLayout $ LayoutParams不能转换为android.support.v4.widget.DrawerLayout $ LayoutParams',看起来像你使用了错误的'LayoutParams'种类 – Wesley

+0

@westlinkin,你有多少个子元素请参阅OP的原始问题吗?您可以添加引用吗?'您只能在DrawerLayout中放置两个子视图' – nmxprime