如何防止键盘隐藏?

时间:2011-10-03 13:33:44

标签: android

假设我有一个启动活动的InputService(键盘)。由于活动具有透明的背景,可以看出,它在它下面进行着。活动开始后,键盘会隐藏在活动结束后,并在活动结束后保持隐藏状态。

如何防止它隐藏?

Intent PopIntent = new Intent(getBaseContext(), popup.class);
PopIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(PopIntent);

2 个答案:

答案 0 :(得分:1)

这样做:

//Show soft-keyboard:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

答案 1 :(得分:-1)

我陷入了完全相同的问题:-(。你有没有找到解决方案?

在我回到原始活动并在TextView上模拟touchevent以便TextView再次绑定到InputMethodService之后,我尝试以编程方式再次打开键盘:

Runnable r = new Runnable() {

                @Override
                public void run() {
                    final Instrumentation inst = new Instrumentation();
                    int[] location = new int[2];
                    tvEdit1.getLocationOnScreen(location);
                    long time1 = SystemClock.uptimeMillis();
                    long time2 = SystemClock.uptimeMillis();
                    MotionEvent mv = MotionEvent.obtain(time1, time2, MotionEvent.ACTION_DOWN,
                            location[0], location[1], 0);
                    inst.sendPointerSync(mv);

                    time1 = SystemClock.uptimeMillis();
                    time2 = SystemClock.uptimeMillis();
                    mv = MotionEvent.obtain(time1, time2, MotionEvent.ACTION_UP,
                            location[0], location[1], 0);

                    inst.sendPointerSync(mv);

                }
            };    

            Thread t = new Thread(r);
            t.start();

如果我知道用户点击了哪个TextView,那就有效。有没有办法在InputMethodService类中找到绑定TextView的相关位置?位置是指用于模拟该位置上的touchevent的x和y坐标。