我有一个正在编写的 Android 应用程序。它有一个 ListActivity ,它全部设置为使用此布局为每个项目加载我的数据。
我的数据适配器绑定没有问题,我已经设置它,以便从列表中选择一个项目时调用此方法。
private void showPasswordBox(View v) {
EditText passwordBox = (EditText)v.findViewById(R.id.hidden_box);
Button passwordSubmit = (Button)v.findViewById(R.id.hidden_box_submit);
passwordSubmit.setText("Login");
passwordSubmit.setVisibility(View.VISIBLE);
passwordBox.setFocusableInTouchMode(true);
passwordBox.setHint(R.string.password);
passwordBox.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
passwordBox.setVisibility(View.VISIBLE);
}
这具有显示和 EditText 和一个 Button 的效果(在我的布局中为 hidden_box 和 hidden_box_submit)。这正是我想要的。
但是,当用户点击新可见的 EditText (hidden_box) 时会出现问题。IME 弹出并且 hidden_box 立即失去焦点。因此,在 IME 上键入的任何内容都不会出现在 EditText 中。相反,它正在做这种奇怪的事情,输入的任何内容都以灰色字母显示在键盘上方,并在 IME 关闭时保留在屏幕底部。这就像 IME 正在输入它自己的临时隐形框。
如果用户在 IME 已显示后点击 EditText,则应用程序将正常运行。在 IME 上键入的任何内容都会出现在 EditText 中,并在 IME 关闭时保留。
在我看来,当 IME 弹出时(当用户点击 EditText 时它会立即弹出,它应该立即执行)它与我的应用程序完全解除关联并在 IME la-la 土地上做它的事情,除非我将它指向通过在键入和关闭键盘之前点击 EditText 来编辑 EditText。如何使它正常运行,以便在弹出后立即直接输入 EditText?