关于java:用户如何仅通过长按来更改textview的值?

How can user change value of textview with long click only?

我正在创建一个应用程序来跟踪分数。分数显示在 TextView 中,当用户单击 TextView 时,分数会增加。这完美!但是,我想设置一个 onLongClickListener() 来编辑文本。因此,当用户执行 LongClick 时,我希望仅在屏幕上弹出一个数字编辑器,当用户单击 OK 或 Done 时,它??会将 TextView 值更新为用户输入的数量。

有人可以告诉我如何做到这一点吗?这是我的第一个真正的应用程序,所以我对如何实现这一点有点困惑,并且在 Google/Stackoverflow 上的所有搜索都没有帮助。


由于 TextView 是只读的,我过去所做的就是在同一个地方有一个 EditText 和一个 TextView。通过这种方式,当您想要进入和退出"编辑模式"时,您必须有代码来显示和隐藏两个视图。因此,在您的 onLongClick 事件中,您将隐藏 TextView 并显示 EditText。在 Enter 键上(在 EditText 上使用键侦听器)以及当 EditText 失去焦点时(也有焦点侦听器),您将执行相反的操作。

另一部分是如何将输入限制为数字输入。看一下这个:
https://stackoverflow.com/a/7300516/53501

至于 EditText 失去焦点时该怎么做,我会提示用户确认或取消更改。我个人会为此使用 AlertDialog(通过 AlertDialog.Builder)。

阅读了关于这是你的第一个应用的评论,如果你想澄清这些事情,请发表评论。


你可以这样做...

1
2
3
4
5
6
7
8
9
 text1.setOnLongClickListener(new OnLongClickListener()
 {  
        @Override
        public boolean onLongClick(View arg0)
        {
            text.setText("Your Text");
            return false;
        }
 });

首先创建您想要显示的视图(参见此处如何操作)。构造对话框并在 onLongClickListener 内部 - 显示对话框。
另外 - 为对话框内的按钮分配一个 onClickListener,它将输入应用到您的 TextView.