Android浮动键盘

时间:2016-09-19 10:07:15

标签: android keyboard floating

是否可以通过编程方式更改键盘的位置? 我正在为图腾开发一个应用程序,如果键盘出现在底部,则很难使用。

我尝试创建一个扩展InputMethodService的自定义键盘,我可以更改键的布局,但我无法更改键盘的视图位置。

SwiftKey 允许移除键盘并垂直拖动它,他们怎么能这样做?

2 个答案:

答案 0 :(得分:1)

在InputMethodService内,您引用​​了Window。添加您的拖动逻辑以将LayoutParams的{​​{1}}更新。确保正确实施window。请注意,即使您尝试为onComputeInset使用新的LayoutParams,窗口的重力也始终是水平居中且垂直于底部。

查看我的示例https://github.com/dbof10/float-keyboard enter image description here

答案 1 :(得分:0)

将KeyboardView放在RelativeLayoutFrameLayout内,OnTouchListener更改其边距。例如

public boolean onTouch(View view, MotionEvent event) {
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
boolean performClick = false;

switch (event.getAction()) {
    case MotionEvent.ACTION_MOVE:
        moveToY = (int) (event.getRawY() - dy);
        moveToX = (int) (event.getRawX() - dx);
        params.topMargin = moveToY;
        params.leftMargin = moveToX;
        view.setLayoutParams(params);
        performClick = false;
    break;

    case MotionEvent.ACTION_UP:
        performClick = true;
        break;

    case MotionEvent.ACTION_DOWN:
        dy = event.getRawY();
        dx = event.getRawX();
        performClick = true;
        break;
}
return !performClick; }

浮动KeyboardView here

的更详细示例