2013-01-08 104 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" />