0

我有一个文本视图获得键盘焦点的活动。

我为父视图设置了一个 ontouchlistener;如果点击超出了文本视图的范围,我将使用隐藏我的文本视图;

InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(textView.getWindowToken(), 0);

我唯一的问题是,如果没有显示键盘并且单击了父级,它会不断触发这两行,这最终会导致无用的事务(我希望尽可能多地保存处理..)

我一直在尝试使用一些 textview 方法,如 hasfocus 或 isfocused 等,但我似乎找不到一个只触发文本视图的方法来显示键盘...

有谁知道这是否可能?

下面的 if 语句是我想放置方法的地方..

public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            if (textView.*SOME METHOD HERE*?) {
                Log.e(TAG, "LOSING FOCUS");
                InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(textView.getWindowToken(), 0);
            }
        }
                    return true;
    }

谢谢

4

1 回答 1

-1

检查配置。keyboardHidden 值将保存是否有任何键盘。除非有面部键盘(想想黑莓风格),否则这将起作用。如果这些很重要,您将需要一些更复杂的逻辑,包括键盘字段和 hardKeyboardHidden 字段。

于 2012-11-15T07:12:58.260 回答