我在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;
}
答案 0 :(得分:1)
将android:lines
,android:minLines
和android:maxLines
添加到 EditText 视图
同时更改android: inputType = "textMultiline"
如果您愿意,也可以将android:scrollbars="vertical"
添加到EditText