自定义键盘中的间距

在制作自定义键盘时,我可以通过使用android:horizontalGap="6.25%p.来获得键的前导空格(左侧空格) android:horizontalGap="6.25%p.
如何获得尾部空间(右侧的空间)?

Solutions Collecting From Web of "自定义键盘中的间距"

 android:horizontalGap="6.25%p. 

它创造了在带有horizontalGap间隙属性的关键之前的间隙。 即。 领先的空间(左侧的空间)的一个关键。

例如。

 <Row> <Key android:codes="69" android:keyLabel="E" android:horizontalGap="6.25%p" /> <Key android:codes="70" android:keyLabel="F" /> </Row> 

现在添加一个大于0的horizontalGap (在键盘级别上), horizontalGap (在Key级别上)不再在携带horizontalGap属性的键之前创build一个间隙。 即。 拖尾空间(空间右侧)的一个键

对于我在Android 5.1上android:horizontalGap属性的工作原理如下:

  • 如果所有android:keyWidth的行总和大于100,那么在指定的键之后显示间隙。
  • 如果总和小于100,那么差距在键之前

例如。 在这种情况下,它是之前

 <Row> <Key android:codes="97" android:keyLabel="a" android:horizontalGap="5%p" android:keyEdgeFlags="left"/> <Key android:codes="115" android:keyLabel="s"/> <Key android:codes="100" android:keyLabel="d"/> <Key android:codes="102" android:keyLabel="f"/> <Key android:codes="103" android:keyLabel="g"/> <Key android:codes="104" android:keyLabel="h"/> <Key android:codes="106" android:keyLabel="j"/> <Key android:codes="107" android:keyLabel="k"/> <Key android:codes="108" android:keyLabel="l"/> <Key android:codes="66" android:keyIcon="@drawable/enter_key" android:keyWidth="20%p" android:isRepeatable="true" android:keyEdgeFlags="right"/> </Row> 

而当我只改变一个值时,差距出现在:

 <Row> <Key android:codes="97" android:keyLabel="a" android:horizontalGap="5%p" android:keyEdgeFlags="left"/> <Key android:codes="115" android:keyLabel="s"/> <Key android:codes="100" android:keyLabel="d"/> <Key android:codes="102" android:keyLabel="f"/> <Key android:codes="103" android:keyLabel="g"/> <Key android:codes="104" android:keyLabel="h"/> <Key android:codes="106" android:keyLabel="j"/> <Key android:codes="107" android:keyLabel="k"/> <Key android:codes="108" android:keyLabel="l"/> <Key android:codes="66" android:keyIcon="@drawable/enter_key" android:keyWidth="22%p" android:isRepeatable="true" android:keyEdgeFlags="right"/> </Row> 

我也有这个问题。 我从未find一个好的解决scheme。 Android的键盘布局API很糟糕。 如果我再一次这样做,我不会使用它,而是直接创build我自己的用户界面,从头开始与InputMethod接口。

在任何情况下,我的黑客解决scheme是在布局的底部添加一个额外的键,宽度为100%,高度仅为1dp。 该button什么也没有,高度是如此之小,用户不会看到它。 但关键的宽度解决了差距问题。

唯一的解决方法是指定正确的keyWidth,以便keyWidth在一行中的总和小于或等于100%。 (谢谢@Lemberg您的观察)

对于我的例子,我将100乘以12(连续的最大键的数量)为8.(3)因此,对于11关键行的正确水平间隔将是8.33 / 2。 (4.165 + 11 * 8.33 + 4.165 = 99.96〜100)

 <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="8.33%p" ... <Row> <Key android:codes="4304" android:keyLabel="ა" android:horizontalGap="4.165%p" android:keyEdgeFlags="left" /> <Key android:codes="4321" android:keyLabel="ს" /> <Key android:codes="4307" android:keyLabel="დ" /> <Key android:codes="4324" android:keyLabel="ფ" /> <Key android:codes="4306" android:keyLabel="გ" /> <Key android:codes="4336" android:keyLabel="ჰ"/> <Key android:codes="4335" android:keyLabel="ჯ"/> <Key android:codes="4313" android:keyLabel="კ"/> <Key android:codes="4314" android:keyLabel="ლ"/> <Key android:codes="4329" android:keyLabel="ჩ"/> <Key android:codes="4319" android:keyLabel="ჟ" android:keyEdgeFlags="right"/> </Row>