【发布时间】:2016-09-19 10:07:15
【问题描述】:
是否可以通过编程方式更改键盘的位置? 我正在开发一个图腾的应用程序,如果键盘出现停靠在底部,则很难使用。
我尝试创建一个扩展 InputMethodService 的自定义键盘,并且我能够更改键的布局,但我无法更改键盘的视图位置。
SwiftKey 允许松开键盘并垂直拖动它,他们怎么做?
【问题讨论】:
是否可以通过编程方式更改键盘的位置? 我正在开发一个图腾的应用程序,如果键盘出现停靠在底部,则很难使用。
我尝试创建一个扩展 InputMethodService 的自定义键盘,并且我能够更改键的布局,但我无法更改键盘的视图位置。
SwiftKey 允许松开键盘并垂直拖动它,他们怎么做?
【问题讨论】:
在 InputMethodService 中,您引用了 Window。添加您的拖动逻辑以更新LayoutParams 为window。确保正确实施onComputeInset。请注意,即使您尝试为window 使用新的LayoutParams,窗口的重力始终水平居中,垂直居中。
【讨论】:
将 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; }
更详细的浮动键盘视图示例here
【讨论】: