我的EditText
设置如下:
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
android:orientation="vertical" >
<EditText
android:layout_width="match_parent"
android:layout_height="375dp"
android:ems="10"
android:gravity="top">
</EditText>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
在程序中的某个位置,在输入文本后,EditText
将被以下代码禁用:
edittext.setFocusable(false);
edittext.setEnabled(false);
问题是,一旦EditText
被禁用,我无法上下滚动查看我写的内容。如何禁用更多输入,但仍允许查看已写入的内容?
答案 0 :(得分:0)
尝试在android:inputType="textMultiLine"
上设置EditText
。即使我已经在评论中说过:下层API 存在一个错误,但是固定高度可能会有效。
但是,如果这不起作用,您应该创建另一个视图TextView
,其EditText
具有相同的属性,并且gone
的可见性如下:
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
android:orientation="vertical" >
<EditText
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="375dp"
android:ems="10"
android:gravity="top" >
</EditText>
<TextView
android:id="@+id/textview"
android:layout_width="match_parent"
android:layout_height="375dp"
android:ems="10"
android:gravity="top"
android:visibility="gone" >
</TextView>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
然后,当您使用setOnKeyListener
和KeyEvent.ACTION_DOWN
处理KeyEvent.ACTION_ENTER
方法时,您可以在textview中复制文本并删除您的编辑文字:
edittext.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
String st = edittext.getText().toString();
textview.setVisibility(View.VISIBLE);
textview.setText(st);
return true;
}
return false;
}
});
如果您需要重写文字,可以采用相反的方法 希望这会有所帮助。