【问题标题】:Spacing in custom keyboard自定义键盘中的间距
【发布时间】:2013-09-10 16:26:26
【问题描述】:

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

【问题讨论】:

    标签: android android-keypad


    【解决方案1】:
    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>
    

    现在添加一个大于 0 的horizontalGap(在键盘级别),horizontalGap(在键级别)不再在带有horizontalGap 属性的键之前而是现在创建一个间隙。 ie. 键的尾随空格(右侧空格)

    【讨论】:

    • 太好了,但是如果我想要按键之间的一般水平的间隙(在键盘上定义)并且我想要在右侧和左侧的按键之间自定义定义空间...
    【解决方案2】:

    对我来说,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>
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 不能再同意了。我讨厌编写自己的键盘库——但我似乎想不出更好的选择。间距是一团糟。我必须为纵向和横向设计单独的布局 - 我的用户仍然报告问题 - 例如某些平台上的键消失。
      【解决方案4】:

      唯一的解决方法是指定正确的 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-09
        • 2019-01-20
        • 2019-01-05
        • 1970-01-01
        • 2017-04-20
        • 2010-12-09
        相关资源
        最近更新 更多