4

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>

2 番目と 3 番目の行を中央に配置するには何が欠けていますか?

前もって感謝します。

4

1 に答える 1

10

一番上の行には 10 個のキーがあり、2 番目と 3 番目の行にはそれぞれ 7 個と 6 個のキーしかありません。keyWidth は 10% と定義されているため、これらの 10 個のキーがスペース全体を埋めます。しかし、それぞれ 7 個と 6 個のキーを持つ 2 行目と 3 行目は、全スペースの 70% と 60% しか占めていません。キーを列の中央に揃えるには、左側を中央に移動するために、2 行目の最初のキーに 15% の水平ギャップ、3 行目のキーに 20% の水平ギャップが必要です。

2 行目と 3 行目の最初の部分を次のように修正してください。

<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" />
于 2013-03-12T12:26:08.643 に答える