首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

关于安卓的有关问题

2013-10-31 
关于安卓的问题我在做页面时自己做了一组按键和一个文本框,我想让在点击文本框时不弹出安卓系统自带的输入

关于安卓的问题
      我在做页面时自己做了一组按键和一个文本框,我想让在点击文本框时不弹出安卓系统自带的
输入法或者是能把系统自带的输入法盖到我做的按键下面,补充一点我用的是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();
        }

楼主试试!

热点排行