首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义键盘空格键与超过android:keyWidth="40%p“不可点击

自定义键盘空格键与超过android:keyWidth="40%p“不可点击
EN

Stack Overflow用户
提问于 2019-04-06 15:42:28
回答 1查看 119关注 0票数 1

我正在开发一个键盘,但是当我把android:keyWidth=" 40 %p“放在40以上的时候。不能单击空格键的右侧。

我使用的是android studio。和自定义的keyboardview,如下所示

完整的代码是

代码语言:javascript
复制
 <Keyboard ><Row android:rowEdgeFlags="bottom">
    <Key  android:keyWidth="10%" android:codes="-2" android:keyLabel="43"  android:keyEdgeFlags="left" />
    <Key android:keyWidth="10%" android:codes="-6" android:keyLabel="f"   />
    <Key android:keyWidth="10%p"    android:codes="44" android:isRepeatable="true" android:keyLabel=","/>
    <Key android:keyWidth="45%p" android:codes="32" android:isRepeatable="true" android:keyLabel="space"/>
    <Key android:keyWidth="10%p" android:codes="46" android:isRepeatable="true" android:keyLabel="." />
    <Key android:keyWidth="13%p" android:keyEdgeFlags="right"   android:codes="10" android:keyLabel="enter"    />
</Row>

这个输出但是android:keyWidth="45%p“只有40%的空格键是可点击的。

EN

回答 1

Stack Overflow用户

发布于 2020-11-01 20:56:30

这个问题与Keyboard#getNearestKeys的一个方法有关,该方法没有为宽按钮返回正确的值。您可以通过扩展Keyboard类并重写getNearestKeys方法来解决此问题。

像这样

代码语言:javascript
复制
  public class CustomKeyboard extends Keyboard {

    public CustomKeyboard(Context context, int xmlLayoutResId) {
        super(context, xmlLayoutResId);
    }

    @Override
    public int[] getNearestKeys(int x, int y) {
        List<Key> keys = getKeys();
        for (int i = 0; i < keys.size(); i++) {
            if (keys.get(i).isInside(x, y)) return new int[]{i};
        }
        return new int[0];
    } }

here复制

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55546926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档