2013-07-03 53 views
1

我有一個奇怪的問題。我有LinearLayout,其中包含一些固定大小的元素和一個ReletiveLayout,它們使用父空間的剩餘空間(weight = 1)。簡單的佈局:帶有match_parent ant的兒童佈局RelativeLayout minHeight問題

<ScrollView 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:fillViewport="true" > 

    <LinearLayout 
     android:id="@+id/LinearLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:paddingLeft="16dp" 
     android:paddingRight="16dp" 
     tools:context=".LoginActivity" > 

     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="16dp" 
      android:layout_marginTop="@dimen/space_between_views" 
      android:src="@drawable/logo" /> 

     <EditText 
      android:id="@+id/login" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="8dp" 
      android:ems="10" 
      android:hint="@string/login" 
      android:inputType="text" 
      android:singleLine="true" 
      android:text="[email protected]" > 

      <requestFocus /> 
     </EditText> 

     <EditText 
      android:id="@+id/password" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:hint="@string/password" 
      android:inputType="textPassword" 
      android:singleLine="true" 
      android:text="pandora9" /> 

     <Button 
      android:id="@+id/submit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_marginTop="8dp" 
      android:text="@string/login_button" /> 

     <RelativeLayout 
      android:id="@+id/RelativeLayout1" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:minHeight="100dp" > 

      <TextView 
       android:id="@+id/support" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentLeft="true" 
       android:layout_gravity="bottom" 
       android:layout_marginTop="0dp" 
       android:layout_weight="1" 
       android:gravity="center_horizontal|bottom" 
       android:padding="8dp" 
       android:text="@string/support_number" /> 

      <TextView 
       android:id="@+id/forgot_password" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_above="@+id/support" 
       android:layout_centerHorizontal="true" 
       android:layout_marginBottom="20dp" 
       android:padding="@dimen/space_between_views" 
       android:text="@string/forgot_password" /> 

     </RelativeLayout> 
    </LinearLayout> 

</ScrollView> 

我添加了minHeight參數,用於小屏幕的修復問題。但是,如果父母的剩餘空間小於這個minHeight,忘記密碼孩子去父母的頂部,ABOVE標誌被忽略。爲什麼?

我知道其他的方式來使這個工作,但我只是想知道爲什麼會發生這種情況。

我加截圖什麼:

的剩餘空間比較大,所以忘記密碼高於支持: Remaining space is bigger, so Forgot password is above support

剩餘空間較小,所以忘記密碼是父頂部: Remaining space is smaller, so Forgot password is top on parent

+1

如果你已經給RelativeLayout一個權重然後改變android_layout_height =「0dp」而不是匹配父 –

+0

@ShaniGoriwal,謝謝,我修正了這個問題。但是這不能解決這個RelativeLayout問題。 – neworld

回答

0

不知道這個佈局有什麼問題,但是嘗試將所有其他視圖封裝在父佈局中,並將該佈局分配給一個權重。這應該可以解決問題。

+0

你告訴關於RelativeLayout的父母的孩子?你能告訴我應該分配什麼樣的重量嗎? – neworld

+0

我的意思是,RelativeLayout之上的所有視圖都應該包含在LinearLayout中。爲此LinearLayout分配一個權重(比如1)。然後,您可以根據您希望此佈局的高度來編輯此重量。 –

+0

同樣的問題依然存在。我認爲這是RelativeLayout問題。 MinHeight更改了一些內部參數。我知道解決這個問題的方法很少,我只是想知道爲什麼會發生這種情況。 – neworld