我使用的键盘视图被拉伸以适应屏幕的宽度,其中一行中的每个键占据宽度的1/3
// wrapping the function in an appropriate closure
closureList.append({ array in intArrayFunc(array.anyArray.map{ $0 as! Int }) })
// with a helper function
closureList.append(functionConverter(intArrayFunc))
要处理片段上的方向更改,我设置了一个新键盘:
func functionConverter<T>(f: [T] -> Void) -> GeneralArray -> Void {
return { array in
// "safe" conversion to an array of type [T]
let arr: [T] = array.anyArray.flatMap{
if let value = $0 as? T {
return [value]
}
return []
}
f(arr)
}
}
func unsafeFunctionConverter<T>(f: [T] -> Void) -> GeneralArray -> Void {
return { array in
f(array.anyArray.map{ $0 as! T })
}
}
这很好用。我现在想要使用不同的keyHeight来拍摄肖像和风景。当我添加它时,键的高度在方向更改时正确调整大小,但键盘不再填充横向屏幕的宽度
调用keyboardView.invalidateAllKeys();或者使片段视图无效并没有解决问题。
答案 0 :(得分:0)
我通过使用键高度的百分比值来解决此问题,并在onEvaluateFullscreenMode事件中重新创建/重新充气键盘。示例如下。
<强> XML 强>
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
encoding="UTF-16"
android:keyWidth="20%p"
android:keyHeight="8%p"
>
:
:
</Keyboard>
<强>爪哇强>
@Override
public boolean onEvaluateFullscreenMode() {
try {
keyboardView.setKeyboard(new Keyboard(getActivity(), R.xml.keyboard_config));
} catch (Exception e) {
Log.e(TAG, "onEvaluateFullscreenMode: Failed to recreate keyboard.", e);
}
return this.isFullscreenMode();
}