2013-03-19 107 views
1

我是新來的android開發。我試圖做一些我認爲很簡單的事情,但經過多次閱讀,試驗和錯誤和決心後,我找不到解決方案,我發現它簡單而優雅,因此我正在尋求如何解決以下問題的幫助:Android的scrollView autosize

我有兩個UI elemnents,一個TextView,上面寫着「的TextView」和一個EditText框:

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

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:ems="10" 
    android:gravity="top|left" 
    android:inputType="textMultiLine" 
    android:scrollbarAlwaysDrawVerticalTrack="false" 
    android:scrollbarStyle="insideOverlay" > 
    <requestFocus /> 
</EditText> 

</LinearLayout> 

我試圖實施的行爲是: 當用戶將文本添加到的EditText框它擴展和增長 - 在某一點上它增長到足以將TextView從屏幕上滾動。我希望TextView內容始終保持可見。因此,它所在的EditText或可能的容器需要剪切它的內容,而不是滾動整個屏幕。

隨着EditText,我嘗試了使用以下元素的每一個可能的迭代,並找不到解決方案。

  • 滾動型
  • 的FrameLayout
  • 的LinearLayout

如果這是可能的話,我更願意實現純XML這種解決方案,這樣我可以保持關注良好的分離。

回答

0

嘗試將EditText包裝在ScrollView之內以使其滾動。設置ScrollViewlayout_weight屬性爲1fillViewporttrue將強制ScrollView填充可用空間,但絕不會將TextView推出屏幕。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" /> 
    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:fillViewport="true" > 
     <EditText 
      android:id="@+id/editText1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:gravity="top|left" 
      android:inputType="textMultiLine" 
      android:scrollbarAlwaysDrawVerticalTrack="false" 
      android:scrollbarStyle="insideOverlay" > 
      <requestFocus /> 
     </EditText> 
    </ScrollView> 
</LinearLayout> 
+0

嗯......這沒有「工作」。當我加載應用程序,並調出SoftKeyboard,我可以直觀的看到編輯框(其中有一點點黃色邊框)坐在後面SoftKeyboard。真的,它不會調整大小,但它所填充的空間包括SoftKeyboard下面的空間。我測試我的銀河2.我發現這個片段「機器人:windowSoftInputMode =」 stateVisible | adjustResize」添加到我的應用程序,但它並沒有幫助:( – Kevin 2013-03-19 17:44:06

+1

原來我有一個‘全屏’我的設置。清單文件一旦我刪除它,上述工作的落實我還添加以下到我的活動:機器人:windowSoftInputMode =「stateVisible | adjustResize」 – Kevin 2013-03-19 18:02:18

0

使用minLinesmaxLines(的EditText)分別指定最小和最大的EditText可以收縮/增長到。

+0

是的,但我怎麼知道有多少行可用?可用線的數量發生變化。變體是:如果SoftKeyboard顯示與否和屏幕尺寸。 – Kevin 2013-03-19 17:09:59