1

我是android开发的新手。我正在尝试做一些我认为很简单的事情,但经过大量阅读、反复试验和决心后,我未能找到一个我觉得简单而优雅的解决方案,因此我正在寻求有关如何处理以下问题的帮助:

我有两个 UI 元素,一个读取“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 一起,我尝试了使用以下元素的所有可能迭代,但无法找到解决方案。

  • 滚动视图
  • 框架布局
  • 线性布局

如果可能的话,我更愿意在纯 xml 中实现这个解决方案,这样我就可以保持良好的关注点分离。

4

2 回答 2

0

使用minLinesmaxLines(of ) 分别指定可以收缩/增长到EditText的最小值和最大值。EditText

于 2013-03-19T16:55:33.077 回答
0

尝试将其包裹起来EditTextScrollView使其可滚动。设置ScrollView layout_weight属性 to1fillViewporttotrue将强制 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>
于 2013-03-19T17:19:04.347 回答