当前位置: 代码迷 >> Android >> 关于安卓的有关问题
  详细解决方案

关于安卓的有关问题

热度:81   发布时间:2016-04-28 07:30:27.0
关于安卓的问题
      我在做页面时自己做了一组按键和一个文本框,我想让在点击文本框时不弹出安卓系统自带的
输入法或者是能把系统自带的输入法盖到我做的按键下面,补充一点我用的是TableLayout布局做的按钮
里面套TableRow在套button。

------解决方案--------------------
在点击文本框时不弹出安卓系统自带的输入法,有两种方法:
1、重写EditText的onFocusChanged方法,就是在点击的时候隐藏输入法。
@Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        super.onFocusChanged(focused, direction, previouslyFocusedRect);
        final InputMethodManager imm = ((InputMethodManager) getContext()
                .getSystemService(Context.INPUT_METHOD_SERVICE));
        if (imm != null && imm.isActive(this)) {
            imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0);
        }
    }

————这个方法有点弊端,有时候点击后输入法会闪现一下。
2、需要用到反射,调用EditText的setShowSoftInputOnFocus(false)方法,因此这个方法是sdk隐藏的。
Method method;
        try {
            method = Class.forName("android.view.EditText").getMethod("setShowSoftInputOnFocus"
                    , Boolean.class);
            boolean show = false;
            method.invoke(this.getClass(), show);
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

楼主试试!
  相关解决方案