0

我有一個相當基本的導航抽屜工作得很好 - 一個簡單的ListView。但是我需要一個標題在可選項目上方,所以(見下文)將抽屜的XML修改爲一個包含標題的TextView和項目的ListView的RelativeLayout。爲什麼我的Android導航抽屜太大?

結果很奇怪。儘管我已經將所有3(RelativeLayout,TextView和ListView)的寬度指定爲240dp,這是ListView在表示整個抽屜的XML時的寬度,但它看起來像這樣(忽略音量控制 - 沒有看到彈出)。請注意,ListView的寬度爲240 dp,但我分配的紅色背景將一路向右。

enter image description here

這裏是我的XML我的第一個屏幕。相關的抽屜XML位於底部。

<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"> 
<!-- The main content view --> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:background="@drawable/ail_background_gradient" 
    tools:context="com.allinlearning.assist_android.HomeScreenActivityFragment"> 

    <ImageView 
     android:id="@+id/imgViewLogo" 
     android:src="@drawable/ail_logo" 
     android:layout_margin="10dp" 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:scaleType="fitXY" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="ALL In Learning" 
     android:id="@+id/textViewLogo" 
     android:layout_margin="10dp" 
     android:layout_below="@+id/imgViewLogo" 
     android:layout_centerHorizontal="true" 
     android:textSize="@dimen/font_size26" 
     android:textStyle="bold" /> 

    <ImageButton 
     android:id="@+id/imgBtnGradeAssessment" 
     android:src="@drawable/grade_assessment" 
     android:layout_width="100dp" 
     android:layout_height="95dp" 
     android:scaleType="fitXY" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="@+id/textViewGradeAssessment" 
     android:layout_toStartOf="@+id/textViewGradeAssessment" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Grade" 
     android:id="@+id/textViewGradeAssessment" 
     android:textColor="@color/white" 
     android:textSize="@dimen/font_size28" 
     android:layout_centerVertical="true" 
     android:layout_alignRight="@+id/imgViewLogo" 
     android:layout_alignEnd="@+id/imgViewLogo" /> 

    <ImageButton 
     android:id="@+id/imgBtnPrivateData" 
     android:src="@drawable/two_clickers" 
     android:layout_width="100dp" 
     android:layout_height="95dp" 
     android:scaleType="fitXY" 
     android:layout_below="@+id/imgBtnGradeAssessment" 
     android:layout_alignLeft="@+id/imgBtnGradeAssessment" 
     android:layout_alignStart="@+id/imgBtnGradeAssessment" /> 


    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Private Data" 
     android:id="@+id/textViewPrivateData" 
     android:textColor="@color/white" 
     android:textSize="@dimen/font_size28" 
     android:layout_alignBottom="@+id/imgBtnPrivateData" 
     android:layout_toRightOf="@+id/imgBtnPrivateData" 
     android:layout_toEndOf="@+id/imgBtnPrivateData" 
     android:layout_marginBottom="40dp" /> 

</RelativeLayout> 

<!-- The navigation drawer --> 
<LinearLayout android:id="@+id/left_drawer" 
    android:orientation="vertical" 
    android:background="@color/red" 
    android:layout_width="240dp" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:layout_width="240dp" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="I AM THE TITLE" 
     android:id="@+id/tvDrawerTitle" 
     android:layout_margin="10dp" 
     android:layout_centerHorizontal="true" 
     android:textSize="@dimen/font_size26" 
     android:textStyle="bold" 
     android:textAlignment="center" 
     android:textColor="@color/black" /> 

    <ListView 
     android:id="@+id/lvDrawerItems" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="left" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="@color/white" /> 

</LinearLayout> 

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

回答

2

layout_gravity屬性確定哪個子View充當一個DrawerLayout抽屜。目前,您的DrawerLayout的直接子女都沒有設置該屬性,因此兩者都只是填充它,其中LinearLayout位於頂部,涵蓋的內容爲RelativeLayout

android:layout_gravity="left"ListView移至LinearLayout

+0

這也可以解釋你所描述的問題[這裏](http://stackoverflow.com/questions/37757004/how-to-stop-android-navigation-drawer-from-opening-automatically),我剛剛看到。 –

+0

事實上,這是兩個地方的問題。對於另一個問題增加一個具體的答案以便其他人可以受益,是否有意義? – Alyoshak

+0

嗯,我認爲其他問題不像這個問題那麼清楚,因爲它沒有完整的帖子佈局。你可以編輯這個包含其他症狀,並刪除另一個。或者你可以自己發表答案。這取決於你如何處理它。我不想看起來像我代表農業。 :-) –