Android:如何使TextView可编辑?

我怎样才能让用户编辑一个TextView ? 当然,我可以使用EditText ,但是我不知道如何定制它,并且我已经阅读了Android文档, TextView可以编辑。 所以我试过这个:

 <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="80sp" android:text="MyText" android:editable="true" android:singleLine="true" android:inputType="text" android:focusable="true" android:clickable="true" android:cursorVisible="true"/> 

但它仍然看起来像普通的TextView 。 有谁知道我错过了什么? 或者,可能是,如何自定义EditText ,看起来像TextView :没有边框和背景?

Solutions Collecting From Web of "Android:如何使TextView可编辑?"

我知道你不想使用EditText但使它看起来像一个TextView真的很容易。

 <EditText android:id="@+id/Id" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:color/transparent" > </EditText> 

你也可以使用android:background="@null"

编辑:

TextVieweditable参数确实可以编辑(有一些限制)。

如果你设置了android:editable="true"你可以通过D-pad访问TextView ,或者你可以添加android:focusableInTouchMode="true"来获得关注点。

问题是你不能修改现有的文本,你不能移动光标。 你写的文本只是在现有的文本之前添加的。

你可以伪造一个可编辑的Textview。 您只需在触摸时隐藏文本视图(使其成为“可点击”),将其replace为EditText,并在编辑结束后再次显示。

TextView定义了EditText上的所有function,但没有对它们的内置支持。 EditText上的一些主要区别:

a) 方法getDefaultEditable()返回true 。 这只是将这个子类定义为可编辑的标记。

b) 移动方法 。 是一个控制游标行为的对象(位置,向后/向前移动 – 可能在某些语言中改变等)。 相反,TextView只是返回null,因为不是光标。

c) 方法CharSequence getText() 。 TextView为此返回一个string。 EditText使用一个特定的字符序列实现(可编辑)来表示一个可变的文本缓冲区。

因为那样,我们不能把TextView想象成一个克制的EditText。 TextView草图编辑界面,但不实现自己。

如果您需要一个可以closures编辑的文本组件,那么您正在寻找EditText组件。

您可以通过添加这些行来使您的TextView可编辑

 tv.setFocusable(true); tv.setEnabled(true); tv.setClickable(true); tv.setFocusableInTouchMode(true); 
  tv.setCursorVisible(true); tv.setFocusableInTouchMode(true); tv.requestFocus(); tv.setEnabled(true);