2014-07-09 80 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