安卓浮动键盘

3

有没有可能通过编程来改变键盘的位置? 我正在开发一个用于某个设备的应用程序,如果键盘固定在底部,使用起来很难。

我尝试创建一个自定义的键盘,通过扩展InputMethodService,我能够更改按键布局,但我不能更改键盘的视图位置。

SwiftKey允许取消固定键盘并垂直拖动它,他们是如何做到的?

2个回答

1
在InputMethodService中,你可以引用一个Window。将你的拖动逻辑添加到更新window的LayoutParams中。确保正确实现onComputeInset。注意,即使你尝试为window使用新的LayoutParams,它的gravity始终是水平居中和垂直底部。请查看我的示例https://github.com/dbof10/float-keyboard enter image description here

请问您能否更新您的代码库?它看起来非常有前途,但目前似乎存在一些问题。 - hannes ach
你说的“不正常工作”是什么意思?能否在代码库中创建一个问题(issue)? - Ken Zira

0
将一个 KeyboardView 放置在 RelativeLayout 或 FrameLayout 中,并在 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; }

浮动键盘视图的更详细示例在这里


那并没有帮助。 - Ken Zira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接