2013-01-08 171 views
3

我正在嘗試爲Android創建自定義鍵盤。我正在使用軟鍵盤示例應用程序作爲起點。我的問題是我無法在鍵盤中央排一行,而我在網上找到的其他樣本顯然工作正常。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> 

缺少了什麼,以使第二和第三排爲中心?

在此先感謝。

回答

6

頂行有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" />