0

所以我有一个编辑文本,我试图让键盘在倾斜时处于焦点状态。

我正在使用摩托罗拉 MC40 的设备。安卓版本 2.3.4。

我检查它是否在焦点上,我已经调试并看到它在焦点上。我尝试了以下方法:

txtQuantity.selectAll();
txtQuantity.requestFocus();

虽然这适用于我的程序的其他部分,但它不适用于此活动。

编辑文本被聚焦,但文本没有被选中,键盘也不在那里。编辑文本在屏幕上有点低,在其他活动上它有点高。我相信这就是键盘不显示的原因,正确还是错误?

如果我强制使用键盘

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

然后它显示的键盘。然而,出于某种奇怪的原因,我的编辑文本框现在缩小到原来大小的 1/3d,你看不到里面写了什么!

这个问题开始困扰我。

编辑

作为解决方法,此事件似乎有所帮助。但是,我收到一个弹出窗口,要求我在 3 个选项、单词/全部/方法之间进行选择。如果我选择中间那个,它会起作用,但我需要以某种方式以编程方式做到这一点。

edittext.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0, 0, 0));

编辑文本框

<EditText
    android:id="@+id/..."
    android:layout_width="60dp"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/..."
    android:layout_alignRight="@+id/..."
    android:layout_below="@+id/..."
    android:layout_marginTop="10dp"
    android:layout_toRightOf="@+id/..."
    android:ems="10"
    android:hint="@string/..."
    android:imeOptions="actionDone"
    android:inputType="number"
    android:maxLength="10"
    android:nextFocusUp="@+id/..."
    android:selectAllOnFocus="true" />
4

2 回答 2

0

这是一些对我有用的代码。我有一个类似的问题,我会在我的 EditText 上请求焦点,但键盘不会显示。

public static void showKeyboardForEditText(Context context, EditText editText) {
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}

如果您需要关闭键盘,以下是代码:

public static void hideKeyboard(Context context, EditText editText) {
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
于 2013-05-07T13:54:46.203 回答
0

您可以尝试使用:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

然后在您的清单文件中,您可以将以下内容放入<activity>标签中:

android:windowSoftInputMode="adjustPan"
于 2013-05-07T13:50:18.507 回答