旋转时KeyboardView调整大小问题

时间:2015-09-04 14:32:35

标签: android android-layout android-softkeyboard

我使用的键盘视图被拉伸以适应屏幕的宽度,其中一行中的每个键占据宽度的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();或者使片段视图无效并没有解决问题。

1 个答案:

答案 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();
}