1

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

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

4

3 回答 3

2

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

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

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

阅读了这是您的第一个应用程序的评论后,如果您想澄清任何这些事情,请发表评论。

于 2012-12-21T05:04:06.120 回答
0

你可以通过这种方式...

 text1.setOnLongClickListener(new OnLongClickListener()
 {  
        @Override
        public boolean onLongClick(View arg0)
        {
            text.setText("Your Text");
            return false;
        }
 });
于 2012-12-21T05:04:19.647 回答
0

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

于 2012-12-21T05:01:15.687 回答