2012-12-07 39 views
1

我有一個按鈕在ScrollView以下,該按鈕被設置爲與父母底部對齊。滾動視圖的高度設置爲wrap_content。一旦ScrollView充滿內容,它就會出現在按鈕下方。我怎樣才能將它設置爲不在按鈕後面,ScrollView在按鈕開始時結束?初學Android開發者 - 遇到佈局困難

我試過把android:layout_below放在最下面的按鈕,當沒有工作的時候,我試着layout_aboveScrollView的按鈕上面。最後一個導致我的應用程序在開始時崩潰,不知道爲什麼。第一個是ScrollView比屏幕長,導致按鈕被放置在下面,無法訪問它。

這是我的XML文件。

<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:background="@color/light_blue" 
    android:padding="5dp" 
    tools:context=".MainActivity" > 

    <EditText 
     android:id="@+id/editText_query" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/queryPromt" 
     android:imeOptions="actionNext" 
     android:inputType="text" 
     android:textColor="#000" /> 

    <EditText 
     android:id="@+id/editText_tag" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/editText_query" 
     android:layout_marginTop="10dp" 
     android:layout_toLeftOf="@+id/saveButton" 
     android:hint="@string/tagPrompt" 
     android:imeOptions="actionDone" 
     android:inputType="text" /> 

    <Button 
     android:id="@id/saveButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@id/editText_query" 
     android:text="@string/save" /> 

    <TextView 
     android:id="@+id/textView_taggedSearches" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@id/saveButton" 
     android:layout_below="@id/saveButton" 
     android:layout_marginTop="10dp" 
     android:background="#666" 
     android:gravity="center_horizontal" 
     android:text="@string/taggedSearches" 
     android:textColor="#FFF" 
     android:textSize="18sp" /> 

    <ScrollView 
     android:id="@+id/scrollView_query" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/textView_taggedSearches" 
     android:padding="5dp" > 

     <TableLayout 
      android:id="@+id/tableLayout_query" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="5dp" 
      android:stretchColumns="*" > 
     </TableLayout> 
    </ScrollView> 

    <Button 
     android:id="@+id/button_clearTags" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:text="@string/clearTags" /> 

</RelativeLayout> 

回答

0

您可以使用layout_weight來做到這一點。如果將layout_height設置爲「0px」,則可以使用layout_weight在兄弟項目之間分配剩餘的父空間。

在這種情況下,您希望按鈕具有其正常大小,並且滾動視圖佔用任何空間。這應該給你的總體思路:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

    <ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="0px" 
    android:layout_weight="1" > 

     <TableLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    </ScrollView> 

    <Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

</LinearLayout> 
+0

謝謝。這基本上是上面提到的,並且它工作。 – Emrys90

1

嘗試增加

android:layout_below="@id/scrollView_query" 

到最後一個按鈕

+0

是的,你是對的^^ – sam

+0

感謝您的建議,但一旦滾動視圖比屏幕變長的按鈕放置在屏幕下方,你不能訪問它。我希望按鈕始終位於屏幕的底部,並且滾動視圖可以在清除按鈕上方滾動。 – Emrys90

+0

然後考慮使用具有固定分隔點的線性佈局,並將滾動視圖嵌入到上部,並將按鈕嵌入到下部,這樣按鈕位置將被固定,並且滾動視圖可以流出屏幕的已分配部分。 – adarsh

0

我在我的項目之前這樣做。這是我的xml代碼。您可以根據您的使用情況對其進行修改。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_height="wrap_content" android:layout_width="fill_parent"> 
    <TextView android:id="@+id/TextView01" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="This text view should act as header " /> 
    <ScrollView android:layout_marginBottom="50dip" android:id="@+id/ScrollView01" android:layout_height="wrap_content" android:layout_width="fill_parent"> 
      <RadioGroup android:id="@+id/RadioGroup01" android:layout_width="wrap_content" android:layout_height="wrap_content"> 
       <RadioButton android:id="@+id/RadioButton01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." /> 
       <RadioButton android:id="@+id/RadioButton11" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio Button....." />  
      </RadioGroup> 
    </ScrollView> 
    <RelativeLayout android:layout_marginTop="-50dip" android:gravity="bottom" android:layout_height="wrap_content" android:layout_width="fill_parent"> 
     <TableLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1"> 
     <TableRow> 
     <Button android:id="@+id/Button01" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="One"/> 
     <Button android:id="@+id/Button01" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Two" android:layout_gravity="center_vertical"/> 
     <Button android:id="@+id/Button01" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Three" android:layout_gravity="right"/> 
     </TableRow> 
     </TableLayout> 
    </RelativeLayout> 
</LinearLayout>