0

我有一个正在编写的 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?

4

1 回答 1

0
       passwordBox.setFocusableInTouchMode(true);

希望这会奏效。可以?

于 2010-12-24T08:19:38.040 回答