1

我的应用程序中有三个 EditText 小部件,其中一个的 XML 如下所示。它们大部分都可以工作,但问题是实际的小部件位于我的设备屏幕底部。当我点击小部件并显示数字键盘时,它完全覆盖了文本输入窗口,我看不到我正在输入的数字。我可以修改 TextView 以便在我的设备上显示小键盘时,它还显示我当前正在输入的数字吗?

<EditText
    android:id="@+id/EditTextPrices"            android:layout_width="100dip"
    android:layout_height="wrap_content"        android:inputType="number|numberDecimal"
    android:singleLine="true"                   android.imeOptions="actionDone"/>

另一个问题是,当我输入完一个数字后,它并没有将我返回到主活动屏幕,而是为下一个 TextEdit 小部件打开了数字键盘。我不希望这种情况发生。我曾认为设置 android.imeOptions="actionDone" 会导致键盘消失并在我输入完数字后完成,但事实并非如此。如何阻止“下一个”窗口出现?

4

3 回答 3

1

将 android:windowSoftInputMode=”adjustPan” 添加到 Activity 的清单中。这将导致活动向上滚动,以便焦点编辑文本始终在屏幕上。

于 2013-04-04T20:49:09.817 回答
1

考虑将android:windowSoftInputMode添加到清单文件中。“adjustPan”,因为它的值可能是您想要的,尽管我发现它有时无法考虑在您输入内容时,猜词条在软键盘上方所占用的空间。

于 2013-04-04T20:54:24.203 回答
1

使用 adjustPan 的另一个建议很好,另一个想法是将布局放在滚动视图中。

关于你的第二个问题,你是如何处理 actionDone 的?

例如,这就是我隐藏键盘的方式(或者当他们按下完成时做任何你想做的事情)。

final EditText editTextPrices = (EditText) findViewById(R.id.editTextPrices);
editTextPrices.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView view, int actionID, KeyEvent event) {
        if (actionID == EditorInfo.IME_ACTION_DONE) {
            InputMethodManager imm = (InputMethodManager) MyClass.this.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(bugemailaddress.getWindowToken(), 0);
            // DO OTHER HANDLING OF INPUT HERE
            return true;
        }
        return false;
    }
 });
于 2013-04-04T20:54:56.323 回答