自定义键盘中的间距

时间:2013-09-10 16:26:27

标签: android android-keypad

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

4 个答案:

答案 0 :(得分:5)

android:horizontalGap="6.25%p.

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

例如

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

现在添加horizontalGap(在键盘级别上)大于0,horizontalGap(在关键级别)不再创建间隙,但现在在带有{{1属性。 ie。键的尾随空格(右侧空格)

答案 1 :(得分:4)

对于我来说,Android 5.1 true属性的工作方式如下:

  • 如果所有android:horizontalGap的行总和超过100,则在指定了密钥后显示间隙。
  • 如果总和小于100,那么差距就在密钥
  • 之前

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

android:keyWidth

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

之后
<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>

答案 2 :(得分:1)

我也有这个问题。我从未找到一个好的解决方案。 Android的键盘布局API很糟糕。如果我再一次这样做,我就不会使用它,而是从头开始创建我自己的UI,直接与InputMethod连接。

在任何情况下,我的黑客解决方案是在布局的底部添加一个额外的键,宽度为100%,高度仅为1dp。按钮绝对没有任何东西,高度太小,用户看不到它。但是密钥的宽度解决了间隙问题。

答案 3 :(得分:0)

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

对于我的例子,我将100除以12(连续的最大键数)为8.(3)因此11键行的正确horizo​​ntalGap将是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>