我有一个几乎完成的应用程序,它是一个记分牌应用程序。当用户在乐谱上进行长按时,当前会出现一个对话框,其中显示带有 OK 和 CANCEL 按钮的 EditText 字段。当用户单击 EditText 字段时,会出现一个键盘(仅限数字),用户在其中键入新分数,单击 DONE,然后 EditText 字段在对话框中显示新值,当用户单击 OK 时,它会保存输入的值到显示当前分数的 TextView。
问题是我觉得它很麻烦。这是我想要发生的事情:
- 用户对分数进行了 LongClick
- 键盘出现
- 用户输入新分数
- 用户点击确定
- 键盘消失,值被保存到更新当前分数的 TextView。
为了做到这一点,我想到了两件事:
- 我可以创建一个扩展 View 的新类——我对 android 太陌生,无法真正理解这个选项。
- 我可以将对话框中的 EditText 替换为一个新的 XML 文件,该文件的设计类似于键盘。
选项 2:我认为这可能是最简单的,所以我设计了 XML 布局并将其命名为 keypad.xml。现在,当用户执行 LongClick 时,keypad.xml 文件会在带有 OK 和 CANCEL 的对话框中膨胀。到目前为止,一切都很好。但是,我不知道应该将按钮操作的代码放在哪里。
起初,我想我可以为布局中的所有按钮设置一些 onClick 侦听器。我认为所有按钮都将执行完全相同的功能。基本上,从按钮(在本例中为 0-9)获取文本并将其附加到键盘上方的 TextView。然后,当用户单击确定时,将 keypad.xml 中的 TextView 保存到当前分数 textview。
任何人都可以帮我指出正确的方向来完成这个吗?
这是keypad.xml的截图(数字上方有一个空的TextView):
这是 XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill"
android:columnCount="3" >
<TextView
android:id="@+id/textView1"
android:layout_columnSpan="3"
android:layout_gravity="fill"
android:gravity="right|center_vertical"
android:textSize="24sp" />
<Button android:text="1" />
<Button android:text="2" />
<Button android:text="3" />
<Button android:text="4" />
<Button android:text="5" />
<Button android:text="6" />
<Button android:text="7" />
<Button android:text="8" />
<Button android:text="9" />
<Button
android:layout_columnSpan="3"
android:layout_gravity="fill"
android:gravity="center"
android:text="0" />