我试图找出如何在长按时更改textview文本。我提供了一个截屏,希望可以解释我要做什么。
绿色+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()
的用法不正确。我这样说是为了帮助我理解我想做什么,即使那行不通。阅读按键上的参考资料使我感到困惑。我不知道从哪里可以得到任何信息,我们将不胜感激。谢谢您的宝贵时间。
答案 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在这里弹出”部分。)
您可以选择的选项是:
创建一个具有EditText的警报对话框。用户键入内容并单击“确定”后,该对话框将关闭,您只需将该用户输入传递给用户最初按下的TextView。对于带有EditText的AlertDialog,您可以找到有用的示例here
将EditText与TextView重叠,并将EditText的可见性设置为View.INVISIBLE。当用户长时间单击TextView时,可以将EditText的可见性设置为View.VISIBLE,这将使EditText对用户可见并允许键盘输入。用户完成输入后,可以单击键盘上的“ DONE”按钮或任何等效按钮,然后可以将EditText的可见性再次设置为View.INVISIBLE。确保检索EditText值并将其设置为TextView。