如何通过单击按钮使TextView可编辑?

时间:2015-06-11 19:43:57

标签: android android-layout android-widget views android-xml

我有一个应用程序,可以显示数据库中的某些内容,并允许用户对其进行编辑。我有一个活动在一些textview中显示这些细节。现在,屏幕底部有一个“编辑”按钮。单击此按钮时,我想使textview可编辑(最初是只读的),以便可以更新数据库。另外,我希望“编辑”按钮变成“保存”按钮。我知道我可以为此使用另一个活动,但是在同一个活动中有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

EditTextTextView,它可以做TextView可以做得更好

所以假设你有一个TextView

 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"        
    android:text="i am a text"
    android:textColor="#243b03" />

并且您希望通过单击按钮进行编辑;在您的onclick中添加此

   TextView.setCursorVisible(true);
   TextView.setFocusableInTouchMode(true);
   TextView.setInputType(InputType.TYPE_CLASS_TEXT);
   TextView.requestFocus(); //to trigger the soft input

它们不是静态的,但我将它设为静态,因此您知道哪个视图对象的方法就是那些。在输入文本后关于您的按钮然后您将文本更改为“完成”或其他任何内容,ButtonTextView延伸,因此将其视为对TextWatcher的研究

答案 1 :(得分:0)

最好将TextView切换为EditText并将其切换为editText.setEnabled(boolean)以获得您想要的效果

答案 2 :(得分:0)

使textview可编辑有其局限性,例如无法修改其中已有的数据(选中this answer)

您可以使用EditText并在xml中使用android:inputType="none"或在活动/片段中使用<your_editText>.setEnabled(false)将其设置为只读。在用户单击EDIT之后,您可以通过将以下语句放在按钮的onClick方法中来使editText可编辑。

<your_editText>.setEnabled(true) <your_editText>.requestFocus();

关于使EDIT按钮变为SAVE,您可以在onClick方法中放置一个计数器,该方法将跟踪点击的顺序。第一次单击后,您可以使用

更改按钮文本

<your_button>.setText("SAVE")

在下一次单击时,您可以执行用于保存数据的任何语句。