2011-08-13 56 views
4

我在滾動視圖中的LinearLayout內有EditText字段。只要ScrollView不存在,layout_weight="1.0"就會讓我的EditText佔據剩餘的屏幕。但是,只要將LinearLayout包裝在ScrollView內,它就會將EditText更改爲單行,而layout_weight不起作用。強制編輯文本佔據滾動視圖中的全屏

我的完整佈局文件

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

<TextView android:id="@+id/titleTextView"  
      style="@style/TitleHeaderBarText"  
      android:text="@string/announcement" />   

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent"  
     android:orientation="vertical" 
     android:gravity="right" > 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Subject:" 
        android:textSize="16sp" /> 

       <EditText 
        android:id="@+id/et_subject" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" /> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Announcement:" 
        android:textSize="16sp" /> 

       <EditText 
        android:id="@+id/et_announcement" 
        android:layout_width="match_parent" 
        android:layout_height="fill_parent" 
        android:layout_weight="1.0" /> 

       <Button 
        android:id="@+id/btn_save" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:paddingLeft="24sp" 
        android:paddingRight="24dp" 
        android:text="Save" />  

     </LinearLayout> 
</ScrollView> 

</LinearLayout> 

我好像不明白我做錯了。有關如何讓EditText從LinearLayout(位於ScrollView)中佔據屏幕的其餘部分的任何建議。

謝謝。

編輯 再次面對同樣的問題,這是我的佈局。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView android:id="@+id/titleTextView" 
     style="@style/TitleHeaderBarText" 
     android:text="@string/login_title" /> 

    <ScrollView 
     android:id="@+id/sv_weight_tell_us" 
     android:layout_width="match_parent" android:layout_height="match_parent" 
     android:background="@drawable/bg_light_radial_pink" > 
     <LinearLayout 
      android:layout_width="match_parent" android:layout_height="match_parent" 
      android:padding="12dp" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/login_header" 
       android:layout_width="match_parent" android:layout_height="wrap_content" 
       android:text="Login" /> 

      <TableLayout 
       android:layout_width="match_parent" android:layout_height="wrap_content" 
       android:stretchColumns="1" > 
       <TableRow> 
        <TextView 
         android:layout_width="wrap_content" android:layout_height="wrap_content" 
         android:paddingRight="20dp" 
         android:text="@string/username" /> 
        <EditText 
         android:id="@+id/et_username" 
         android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
       </TableRow> 
       <TableRow> 
        <TextView 
         android:layout_width="wrap_content" android:layout_height="wrap_content" 
         android:text="@string/password" /> 
        <EditText 
         android:id="@+id/et_password" 
         android:layout_width="wrap_content" android:layout_height="wrap_content" 
         android:inputType="textPassword" /> 
       </TableRow> 
       <TableRow> 
        <View/> 
        <Button 
         android:id="@+id/btn_login" 
         android:layout_width="wrap_content" android:layout_height="wrap_content" 
         android:text="@string/login" 
         android:padding="12dp" /> 
       </TableRow> 
      </TableLayout> 

      <ProgressBar 
       android:id="@+id/pb_1" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:indeterminate="true" 
       style="?android:attr/progressBarStyleSmall" 
       android:visibility="invisible" /> 

      <TextView 
       android:layout_width="wrap_content" android:layout_height="match_parent" 
       android:layout_weight="1.0" android:gravity="bottom" 
       android:text="@string/dont_have_Q" />   
      <TextView 
       android:id="@+id/tv_sign_up" 
       android:layout_width="wrap_content" android:layout_height="wrap_content" 
       android:text="@string/sign_up_" /> 

     </LinearLayout> 
    </ScrollView> 

</LinearLayout> 
+0

是否需要的EditText有layout_weight屬性?如果您是LinearLayout的寬度設置爲match_parent,那麼將您的EditText設置爲match_parent將填充屏幕,因爲它的方向是「垂直」。 – hooked82

+0

謝謝你的回覆。這實際上是我在發佈之前想到並嘗試過的。但那並不奏效。 – achie

+0

再看看你的佈局文件,我發現缺少標籤。這是否也在你的實際佈局xml中丟失? – hooked82

回答

14

您需要添加滾動型屬性android:fillViewport="true"

... 
<ScrollView 
    android:id="@+id/sv_weight_tell_us" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:background="@drawable/bg_light_radial_pink" 
    android:fillViewport="true" > 
.... 
+0

這確實有效。謝謝。不知道fillViewport標籤是什麼。 – achie

+0

這適用於我。謝謝菲爾。 –