我有一个应用程序,可以显示数据库中的某些内容,并允许用户对其进行编辑。我有一个活动在一些textview中显示这些细节。现在,屏幕底部有一个“编辑”按钮。单击此按钮时,我想使textview可编辑(最初是只读的),以便可以更新数据库。另外,我希望“编辑”按钮变成“保存”按钮。我知道我可以为此使用另一个活动,但是在同一个活动中有没有办法做到这一点?
答案 0 :(得分:2)
EditText
是TextView
,它可以做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
它们不是静态的,但我将它设为静态,因此您知道哪个视图对象的方法就是那些。在输入文本后关于您的按钮然后您将文本更改为“完成”或其他任何内容,Button
从TextView
延伸,因此将其视为对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")
。
在下一次单击时,您可以执行用于保存数据的任何语句。