问题 使EditText在填充时增长


我之前已经知道有关此问题的各种问题,但我找不到我的问题的答案。我正在开发一个Android应用程序,我希望EditText字段在用户输入时扩展。我希望它首先是最小尺寸,如果用户输入的数量超过最小允许值,则扩展。这是我到目前为止的代码:

<ScrollView
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:fillViewport="true" >

    <linearLayout
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:orientation="vertical"
        android:padding="5dp" >

        <linearLayout>
            ...content...
        </linearLayout>

        <linearLayout>
            ...content...
        </linearLayout>

        <EditText 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textMultiLine"
        android:lines="7"
        android:gravity="top" />

    </linearLayout>
</ScrollView>

EditText字段位于父级ScrollView内的parent linearLayout内。它在屏幕上看起来很好但是当我在编辑文本字段中超过第7行时,我必须使用轨迹球返回文本字段。滚动屏幕会滚动整个屏幕。谁能给我一些提示?我尝试对类似的问题实施不同的建议,但没有一个给我正确的答案。谢谢


3363
2017-10-13 23:41


起源

我不清楚你的问题,如果你想让它继续增长删除: android:lines="7"。 - Sam
@Sam然后如何将editText框保持特定大小?我不希望它是一个小盒子,我希望它是一个大盒子开始 - adohertyd
你有没有尝试过 android:minHeight 和 android:minWidth? - Sam
实际上用 android:minLines="7" 代替 android:lines。这将保持至少7行,并在需要时自动调整大小。 - tozka
@Sam现在我觉得自己像一个完全白痴。那当然有效。对于这个愚蠢的问题道歉,我是一个完全的初学者。感谢您的帮助,欣赏它 - adohertyd


答案:


正如@tozka在评论中所述,在布局文件中,指定: android:minLines="" 代替 android:lines=""

在Java中: editText.setMinLines(int) 代替 editText.setLines(int)

在C#中(Mono for Android) editText.SetMinLines(int) 代替 editText.SetLines(int)

来自 Android文档

public void setMinLines (int minlines)

使TextView至少有这么多行。设置此值将覆盖任何其他(最小)高度设置。


12
2018-01-06 21:49