【问题标题】:How to make a TextView editable at the click of a button?如何通过单击按钮使 TextView 可编辑?
【发布时间】:2015-06-11 19:43:56
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

EditTextTextView,它能做什么TextView可以做得更好

所以假设你有一个TextView

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

并且您希望它可以通过单击按钮进行编辑;在你的点击添加这个

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

它们不是静态的,但我将其设为静态,以便您知道哪些视图对象的方法是那些。输入文本后关于您的按钮,然后将文本更改为“完成”或其他任何内容,Button 扩展自 TextView,因此将其视为在 TextWatcher 上进行研究

【讨论】:

  • 我有一个名为 description' 的文本视图,但没有名为 description.setEdittable(Boolean) 的方法。它说“无法解析方法'setEdittable(boolean)'”
  • 对不起先生把它拿出来,那是在 xml 中使用的,也是它被弃用的......对不起。@SumodKulkarni
  • 点击时找不到键盘显示。如何让它弹出?
【解决方案2】:

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

【讨论】:

  • TextView本质上是可编辑的,因此EditTextTextView
【解决方案3】:

使文本视图可编辑有其局限性,例如无法修改其中已有的数据(检查this 答案)

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

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

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

&lt;your_button&gt;.setText("SAVE")

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

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 2021-01-03
    • 1970-01-01
    相关资源
    最近更新 更多