Android 自定义键盘中的间距

Android 自定义键盘中的间距,android,android-keypad,Android,Android Keypad,制作自定义键盘时,我可以使用android:horizontalGap=“6.25%p. 如何获得尾随空间(右边的空间) 它会创建间隙,该间隙位于带有horizontalGap属性的键之前。 即键的前导空格(左边的空格) 例如 现在添加一个大于0的horizontalGap(在键盘级别上),horizontalGap(在键级别上)不再在带有horizontalGap属性的键之前而现在在键之后创建间隙。 即安卓5.1Android:horizontalGap属性上键的尾随空格(右边的空格)的工

制作自定义键盘时,我可以使用android:horizontalGap=“6.25%p.
如何获得尾随空间(右边的空间)

它会创建间隙,该间隙位于带有
horizontalGap
属性的键之前。 即键的前导空格(左边的空格)

例如


现在添加一个大于0的
horizontalGap
(在键盘级别上),
horizontalGap
(在键级别上)不再在带有
horizontalGap
属性的键之前而现在在键之后创建间隙。
即安卓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="22%p" android:isRepeatable="true" android:keyEdgeFlags="right"/>
</Row>

我也遇到了这个问题。我从来没有找到一个好的解决方案。Android的键盘布局API太糟糕了。如果我再重复一遍,我就不会使用它,而是从头开始创建自己的UI,直接与InputMethod接口


在任何情况下,我的破解方案都是在布局底部添加一个额外的键,其宽度为100%,高度仅为1dp。该按钮完全不起作用,高度很小,用户看不到。但键的宽度解决了间隙问题。

唯一的解决方法是指定正确的键宽度,以便一行中的键宽度之和为小于或等于100%。(感谢@Lemberg的观察)

在我的例子中,我将100除以12(一行中的最大键数),即8。(3)因此,11个键行的正确水平间距将为8.33/2。(4.165+11*8.33+4.165=99.96~100)


那太好了,但如果我想在按键之间有一个大致的口才水平(在键盘上定义),该怎么办我想要自定义左右键之间的间距…非常同意。我讨厌必须编写自己的键盘库-但我似乎想不出更好的选择。间距完全是一团糟。我必须为纵向和横向设计单独的布局-我的用户仍然报告问题-比如键盘上的键消失某些平台。
<Row>        
    <Key android:codes="69"    android:keyLabel="E" android:horizontalGap="6.25%p" />
    <Key android:codes="70"    android:keyLabel="F" />        
</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="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>
<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>