Android:自定义键盘行不居中

时间:2013-01-08 12:56:49

标签: android keyboard center ime

我正在尝试为Android创建自定义键盘。我使用软键盘示例应用程序作为起点。我的问题是我无法在键盘中居中,而我在网上找到的其他样本显然有效。

我的XML文件如下所示:

<?xml version="1.0" encoding="utf-8"?><Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:horizontalGap="@dimen/horizontal_gap"
android:keyHeight="@dimen/key_height"
android:keyWidth="10%p"
android:verticalGap="@dimen/vertical_gap" >
<Row>
    <Key
        android:codes="49"
        android:keyEdgeFlags="left"
        android:keyLabel="1" />
    <Key
        android:codes="50"
        android:keyLabel="2" />
    <Key
        android:codes="51"
        android:keyLabel="3" />
    <Key
        android:codes="52"
        android:keyLabel="4" />
    <Key
        android:codes="53"
        android:keyLabel="5" />
    <Key
        android:codes="54"
        android:keyLabel="6" />
    <Key
        android:codes="55"
        android:keyLabel="7" />
    <Key
        android:codes="56"
        android:keyLabel="8" />
    <Key
        android:codes="57"
        android:keyLabel="9" />
    <Key
        android:codes="48"
        android:keyEdgeFlags="right"
        android:keyLabel="0" />
</Row>
<Row>
    <Key
        android:codes="1"            
        android:keyEdgeFlags="left"
        android:keyLabel="q" />
    <Key
        android:codes="2"
        android:keyLabel="w" />
    <Key
        android:codes="3"
        android:keyLabel="e" />
    <Key
        android:codes="4"
        android:keyLabel="r" />
    <Key
        android:codes="5"
        android:keyLabel="t" />
    <Key
        android:codes="6"
        android:keyLabel="y" />
    <Key
        android:codes="-5"
        android:isRepeatable="true"
        android:keyEdgeFlags="right"
        android:keyIcon="@drawable/sym_keyboard_delete" />
</Row>
<Row>
    <Key
        android:codes="99"
        android:keyEdgeFlags="left"
        android:keyLabel="c" />
    <Key
        android:codes="32"
        android:isRepeatable="true"
        android:keyIcon="@drawable/sym_keyboard_space"
        android:keyWidth="30%p" />
    <Key
        android:codes="63"
        android:keyLabel="\?"
        android:keyWidth="@dimen/small_buttons" />
    <Key
        android:codes="33"
        android:keyLabel="!"
        android:keyWidth="@dimen/small_buttons" />
    <Key
        android:codes="46"
        android:keyLabel="."
        android:keyWidth="@dimen/small_buttons" />
    <Key
        android:codes="44"
        android:keyEdgeFlags="right"
        android:keyLabel=","
        android:keyWidth="@dimen/small_buttons" />
</Row></Keyboard>

为了使第二行和第三行居中而缺少什么?

提前致谢。

1 个答案:

答案 0 :(得分:7)

顶行有10个键,而第二行和第三行分别只有7个和6个键。由于keyWidth定义为10%,因此这10个键填充整个空间。但是,分别具有7和6个键的第二行和第三行仅填充整个空间的70%和60%,这意味着它们看起来与左侧对齐,右侧有空置空间。为了使键位于行的中间,第二行的第一个键应具有15%的水平间隙,第三行为20%,以便将左侧移动到中心。

请更正第二行和第三行的第一部分,如下所示:

<Row>
    <Key
        android:horizontalGap="15%"
        android:codes="1"            
        android:keyEdgeFlags="left"
        android:keyLabel="q" />

......

<Row>
    <Key
        android:horizontalGap="20%"
        android:codes="99"
        android:keyEdgeFlags="left"
        android:keyLabel="c" />