当具有预填充文本的EditText变为可编辑时,所有文本都移动到一行

时间:2017-04-14 21:28:38

标签: java android

我在ScrollView中有一个EditText,它预先填充了动态数量的文本。它可以是一行或50或更多。此时,EditText是不可编辑的,文本显示得很好。但是,当我按下按钮使编辑文本可编辑时,EditText的全部内容将被抛入一个非常长的水平滚动线。

你可以在这里看到我在说什么: https://zippy.gfycat.com/GenerousBigHerring.webm

如何防止这种情况发生?我现在已经搞砸了一段时间了。我已经尝试过设置行和maxLines等,但我无法弄明白。

编辑:

这是我当前的ScrollView / EditText:

<ScrollView
    android:id="@+id/result_text_scroll_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/result_title_text"
    android:layout_above="@+id/result_bottom_sheet"
    android:layout_marginTop="20dp"
    android:padding="5dp">


    <EditText
        android:id="@+id/extracted_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:padding="15dp"
        tools:text="Hello, World"
        android:textColor="@color/black"
        android:textStyle="bold"
        android:textSize="@dimen/extracted_text_size"
        android:textIsSelectable="true"
        android:inputType="none"
    />



</ScrollView>

从代码中,我正在做的是启用/禁用编辑:

 @Override
public void enableTextEditing() {
    mExtractedText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
    mExtractedText.setOnKeyListener(this);
}

@Override
public void disableTextEditing() {
    mExtractedText.setInputType(InputType.TYPE_NULL);
    mExtractedText.setOnKeyListener(null);
}


@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
    if (keyEvent.getAction() == KeyEvent.ACTION_DOWN && keyEvent.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
        //All this does is call the View methods to disable text editing
        //and close the keyboard.
        mPresenter.doneEditingButtonPressed();
        return true;
    }
    return false;
}

1 个答案:

答案 0 :(得分:1)

android:linesandroid:minLinesandroid:maxLines添加到 EditText 视图

同时更改android: inputType = "textMultiline"

如果您愿意,也可以将android:scrollbars="vertical"添加到EditText