2016-12-17 42 views
0

我在android中很初學。我試圖設計一個屏幕,在創建項目時我已經選擇了抽屜模板。因此,所需的基本功能就位,例如頂部的工具欄和左側的抽屜菜單圖標。現在我想在圖像視圖下方的工具欄和列表視圖中放置一個imageview。我正在使用下面的XML的佈局。Android工作室中的Android佈局問題

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v4.widget.DrawerLayout 
     android:id="@+id/drawer_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     tools:openDrawer="start"> 

     <include 
      layout="@layout/app_bar_main" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 

     <android.support.design.widget.NavigationView 
      android:id="@+id/nav_view" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      android:fitsSystemWindows="true" 
      app:headerLayout="@layout/nav_header_main" 
      app:menu="@menu/activity_main_drawer" /> 

     <ImageView 
      android:id="@+id/sliderTempImageView" 
      android:layout_width="match_parent" 
      android:layout_height="100dp" 
      android:scaleType="fitXY" 
      android:src="@drawable/slider_image1" /> 
    </android.support.v4.widget.DrawerLayout> 
</RelativeLayout> 

但圖像覆蓋了工具欄和適合整個屏幕,即使我給了固定的高度100dp。一旦圖像視圖設置正確,我需要在imageview下面添加列表視圖。

+1

添加的ImageView在'app_bar_main'。 –

+0

嗨,我試過一樣,它的工作。但我想知道爲什麼它沒有像上面給出的代碼一樣工作。由於我是Android新手,如果我能夠知道原因,那會讓人更好地理解。 –

+0

請參閱下面的答案。 –

回答

1

我在評論中的回答:在app_bar_main佈局中添加ImageView。

之所以你的代碼沒有工作:

按DrawerLayout規範

  • DrawerLayout充當窗口內容的頂層容器,允許交互式的「抽屜」的觀點被拉出來自窗戶的一個或兩個垂直邊緣。
  • 要使用DrawerLayout,位置的主要內容視圖作爲第一個孩子與寬度和match_parent的高度,沒有layout_gravity因爲XML訂單意味着Z排序和抽屜必須在內容上。在主內容視圖之後添加抽屜作爲子視圖,並適當地設置layout_gravity。 抽屜通常使用match_parent作爲固定寬度的高度

注意語句位置的主要內容視圖作爲第一個孩子。在你的情況下,你想放置一個ImageView下方的工具欄,這意味着你想修改的主要內容。主要內容位於app_bar_main佈局內。

但圖像覆蓋了工具欄和適應整個屏幕,即使我給的100dp

這是因爲抽屜通常使用match_parent身高有一個固定的寬度固定高度。

也從主佈局中刪除RelativeLayout,因爲它是無用的。將DrawerLayout作爲根佈局。

參考文獻:

  1. https://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html
  2. https://developer.android.com/training/implementing-navigation/nav-drawer.html
1

給一個ID,應用欄包括:

android:id="@+id/mToolbar" 

並在您的ImageView補充一點:下面

android:layout_below="@id/mToolbar" 

由於您使用RelativeLayout,你可以使用的佈局,上方其他屬性來定位您的意見。

提示:避免硬編碼您的值。使用match_parentwrap_content或使用您的dimens.xml文件來聲明您的值。

+0

感謝您的建議。我將把這些值移至dimens.xml。我試圖給出屬性android:layout_below for imageview。但它沒有列出。 –

+0

未顯示的屬性是常見的AS問題。你可以嘗試重建項目。由於你的父佈局是一個'RelativeLayout',它必然會出現。 – AlphaQ

+0

這裏'RelativeLayout'沒用。而'android:layout_below'不能用於'DrawerLayout',因爲它是在'RelativeLayout.LayoutParams'嵌套類中定義的。 –

1

其實RelativeLayout的有特點使用下列財產

低於 以上 LEFT_OF RIGHT_OF CENTER_IN_PARENT ALIGN_PARENT_TOP ALIGN_PARENT_BOTTOM

到其子安排低於/高於/左/右/中/上/下一個佈局等