如何在KeyLongPress上更改TextView文本?

时间:2019-01-08 19:35:41

标签: android textview gettext settext onlongclicklistener

我试图找出如何在长按时更改textview文本。我提供了一个截屏,希望可以解释我要做什么。

Phone App Picture

绿色+10.00的价格表。我希望能够保持每个价格不变,并弹出键盘来编辑文本字段。我是编程新手,很难找到合适的术语。

到目前为止,我为此尝试过的代码是:

(1..912).forEach {
        val id = resources.getIdentifier("Price$it", "id", packageName)
        val tv = findViewById<TextView>(id)
        when {
            onKeyLongPress(id, setText()) -> tv.text.getText()
            }
        }

我将912个价格分组,以引用每个ID。而不是尝试对单个价格应用任何代码。我知道onKeyLongPress()的用法不正确。我这样说是为了帮助我理解我想做什么,即使那行不通。阅读按键上的参考资料使我感到困惑。我不知道从哪里可以得到任何信息,我们将不胜感激。谢谢您的宝贵时间。

1 个答案:

答案 0 :(得分:1)

Android具有用于编辑文本的特定视图:EditText

在您的情况下,您应该实现EditText,它将弹出键盘和光标。

对于长按操作,您应该实现onLongClickListener:

textView.setOnLongclickListener {
    // [ Let the EditText pop up here ]
    // ....
    true // Return value for the onLongClick function
};

我建议在getView()或onBindViewHolder()方法的ListView适配器类(或RecyclerViewAdapter)中实现onLongclickListener。 Here是对此的详细示例。

下一步,您要启用EditText,以便用户可以输入内容。此函数应位于上面的代码片段内。 (“让EditText在这里弹出”部分。)

您可以选择的选项是:

  1. 创建一个具有EditText的警报对话框。用户键入内容并单击“确定”后,该对话框将关闭,您只需将该用户输入传递给用户最初按下的TextView。对于带有EditText的AlertDialog,您可以找到有用的示例here

  2. 将EditText与TextView重叠,并将EditText的可见性设置为View.INVISIBLE。当用户长时间单击TextView时,可以将EditText的可见性设置为View.VISIBLE,这将使EditText对用户可见并允许键盘输入。用户完成输入后,可以单击键盘上的“ DONE”按钮或任何等效按钮,然后可以将EditText的可见性再次设置为View.INVISIBLE。确保检索EditText值并将其设置为TextView。