2013-03-19 70 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