8

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

4

4 回答 4

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(在键级别上)不再在带有horizontalGap属性的键之前而是现在之后创建间隙。 IE。键的尾随空格(右侧空格)

于 2013-09-10T16:47:56.633 回答
4

对我来说,Android 5.1android: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>
于 2015-06-23T12:21:25.010 回答
1

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

无论如何,我的 hack 解决方案是在布局底部添加一个额外的键,其宽度为 100%,高度仅为 1dp。该按钮完全没有任何作用,而且高度非常小,用户看不到它。但是键的宽度解决了间隙问题。

于 2016-02-05T17:14:32.963 回答
0

唯一的解决方法是指定正确的 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>
于 2016-12-16T07:25:17.663 回答