2015-02-08 32 views
0

我有這個佈局XML文件:爲什麼我的元素不是按照假定的那樣呆在底部?

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fillViewport="true"> 

    <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" 
     tools:context=".MainActivity"> 

     <TextView 
      android:layout_marginTop="40dp" 
      android:id="@+id/emalLbl" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:text="@string/test" /> 

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/testTxtLay" 
      android:layout_marginTop="10dp" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/emalLbl" 
      android:orientation="horizontal" 
      android:padding="10dp" 
      android:weightSum="1"> 

      <EditText 
       android:id="@+id/testTxt" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1.0" 
       android:background="@drawable/edit_text_design" /> 
     </LinearLayout> 

     <TextView 
      android:layout_marginTop="60dp" 
      android:id="@+id/reminderLbl" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/testTxtLay" 
      android:layout_centerHorizontal="true" 
      android:text="@string/reminder" /> 

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_marginTop="10dp" 
      android:id="@+id/reminderTxtLay" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@id/reminderLbl" 
      android:orientation="horizontal" 
      android:padding="10dp" 
      android:weightSum="1"> 

      <EditText 
       android:id="@+id/reminderTxt" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1.0" 
       android:lines="2" 
       android:background="@drawable/edit_text_design" /> 
     </LinearLayout> 

     <View 
      android:id="@+id/spacer" 
      android:layout_width="0dp" 
      android:layout_height="0dp" 
      android:layout_below="@id/reminderTxtLay" 
      android:layout_centerHorizontal="true" /> 

     <Button 
      android:layout_marginTop="200dp" 
      android:id="@+id/pickDateBtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_below="@id/reminderTxtLay" 
      android:layout_toLeftOf="@+id/spacer" 
      android:onClick="showDatePickerDialog" 
      android:text="@string/datePickerBtnTxt" /> 

     <Button 
      android:id="@+id/pickTimeBtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignBaseline="@id/pickDateBtn" 
      android:layout_alignParentRight="true" 
      android:layout_toRightOf="@+id/pickDateBtn" 
      android:onClick="showTimePickerDialog" 
      android:text="@string/pickTimeBtn" /> 

     <View 
      android:id="@+id/spacerTxt" 
      android:layout_width="0dp" 
      android:layout_height="0dp" 
      android:layout_below="@id/reminderTxtLay" 
      android:layout_centerHorizontal="true" /> 

     <EditText 
      android:layout_marginTop="15dp" 
      android:id="@+id/selectedDate" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignBaseline="@id/spacerTxt" 
      android:layout_below="@id/pickDateBtn" 
      android:layout_toLeftOf="@+id/spacerTxt" /> 

     <EditText 
      android:id="@+id/selectedTime" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignBaseline="@id/selectedDate" 
      android:layout_below="@id/pickTimeBtn" 
      android:layout_toRightOf="@+id/selectedDate" /> 

     <Button 
      android:id="@+id/submitBtn" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerInParent="true" 
      android:onClick="submitData" 
      android:text="@string/submitBtn" /> 

    </RelativeLayout> 
</ScrollView> 

這是定製設計的7個英寸平板電腦,放置在res\layout-sw600dp

反正在Android工作室景觀預覽似乎只是罰款:

enter image description here

但在仿真器中出現了問題,這裏是它看起來很奇怪。我的意思是提交按鈕不在底部,pickDatepickTime按鈕位於佈局的底部。

enter image description here enter image description here

我知道我缺少一個基本點在這裏,但Android開發人員,我不能夠發現它。

你能給我一個推動力嗎?

+0

什麼是你想與提交按鈕父中心來完成? – tachyonflux 2015-02-08 08:43:51

+0

@karaokyo以它爲中心 – Slim 2015-02-08 08:48:25

+1

如果你想垂直居中,它不能與父母對齊。如果你想水平居中,它已經匹配父寬度。 – tachyonflux 2015-02-08 08:51:55

回答

1

下面是一個完成您似乎嘗試完成的方法。您不需要爲「空格」創建任何視圖等。您只需要在視圖的任一側添加邊距或填充以使其從另一個視圖移開。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:fillViewport="true"> 

<RelativeLayout 
    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"> 
    <LinearLayout 
     android:id="@+id/linear_wrapper" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:gravity="center_horizontal" 
     > 

     <TextView 
      android:layout_marginTop="40dp" 
      android:id="@+id/emalLbl" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/test" /> 


     <EditText 
      android:id="@+id/testTxt" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/edit_text_design" /> 

     <TextView 
      android:layout_marginTop="60dp" 
      android:id="@+id/reminderLbl" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/reminder" /> 


     <EditText 
      android:id="@+id/reminderTxt" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:lines="2" 
      android:background="@drawable/edit_text_design" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:layout_marginTop="200dp" 
      > 
      <Button 
       android:id="@+id/pickDateBtn" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:onClick="showDatePickerDialog" 
       android:text="@string/datePickerBtnTxt" /> 

      <Button 
       android:id="@+id/pickTimeBtn" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:onClick="showTimePickerDialog" 
       android:text="@string/pickTimeBtn" /> 
     </LinearLayout> 


     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 
      <EditText 
       android:id="@+id/selectedDate" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1"/> 

      <EditText 
       android:id="@+id/selectedTime" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1"/> 
     </LinearLayout> 

    </LinearLayout> 

    <Button 
     android:id="@+id/submitBtn" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_below="@+id/linear_wrapper" 
     android:onClick="submitData" 
     android:text="@string/submitBtn" /> 
</RelativeLayout> 

+0

這樣'selectedDate'和'selectedTime'隱藏在submit按鈕下。 – Slim 2015-02-08 10:29:16

+0

你是對的,忘了在提交按鈕上添加一個。現在編輯它。 您也可以將提交按鈕放在底部的外部LinearLayout中,它將始終位於所有視圖的底部,但不一定位於屏幕的底部。全部取決於您的屏幕尺寸。 – Furedal 2015-02-08 11:01:02

+0

但現在它不在橫向模式下就消失了。 :( – Slim 2015-02-08 11:31:14

0

你可以把2個按鈕放在一起!

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:padding="10dp" 
     android:weightSum="1"> 

     <Button 
      android:id="@+id/btn1" 
      android:layout_width="wrap_content" 
      android:gravity="left" 
      android:layout_height="wrap_content" 
      android:lines="2" /> 

     <Button 
      android:id="@+id/btn2" 
      android:layout_width="fill_parent"  
      android:gravity="right" 
      android:layout_height="wrap_content" /> 

    </LinearLayout> 
相關問題