可垂直和水平滚动的EditText,不会自动将文本分割到下一行

时间:2015-09-02 20:26:02

标签: android android-layout android-edittext

我需要一个看似简单文本编辑器的活动:
全屏EditText,下方有提交按钮。

重要提示:
1. EditText必须垂直和水平滚动
2.仅当用户单击下一行按钮时,输入文本才会转到下一行 3. EditText填充屏幕顶部和按钮之间的整个空间

我的代码:

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

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:fillViewport="true">

            <HorizontalScrollView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fillViewport="true">

                    <EditText
                        android:id="@+id/some_edittext"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:gravity="top|left"
                        />

            </HorizontalScrollView>

    </ScrollView>

    <Button
        android:id="@+id/submit_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Submit"/>

</LinearLayout>

为什么不好:
EditText AUTOMATICALLY在文本到达行尾时将文本分解到下一行

在我将fillViewport设置为true之前,它工作正常。但是否则EditText不会填满整个屏幕

提前致谢

2 个答案:

答案 0 :(得分:2)

EditText实际上已经内置了滚动功能,因此您不必使用ScrollView。唯一的问题是它不支持flings。

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

    <EditText
        android:id="@+id/some_edittext"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="top|left"
        />

    <Button
        android:id="@+id/submit_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Submit"/>

</LinearLayout>

要停止自动换行,您可以激活水平滚动:

EditText editText = (EditText) findViewById(R.id.some_edittext);
editText.setHorizontallyScrolling(true);
editText.setMovementMethod(new ScrollingMovementMethod());

答案 1 :(得分:0)

我认为你可以设置你的EditText属性android:maxLines =&#34; 1&#34;原来。

当&#34;新线&#34;单击按钮,您可以使用setMaxLines(int)方法以编程方式增加该值。

EditText.setMaxLines(int) 

这里是doc - &gt; link

希望这会有所帮助。