【问题标题】:How to force redraw of soft keyboard如何强制重绘软键盘
【发布时间】:2015-03-08 00:27:46
【问题描述】:

我创建了一个自定义键盘,当方向改变时它不能正确调整大小。我试过invalidateKeys(),并手动设置所有键的大小,但没有任何乐趣。

【问题讨论】:

    标签: android keyboard


    【解决方案1】:

    我在动态调整键盘视图的键高时遇到了一个类似的问题。为了解决这个问题,我做了几件事:

    1) 创建一个新类来扩展定义公共 getKeyHeight 方法并覆盖 getHeight 方法的 Keyboard 类。我的原型代码:

    public void setKeyHeight(int height) {
       super.setKeyHeight(height);
    }
    
    @Override
    public int getHeight() {
       return getKeyHeight() * 3;
    }
    

    2) 在我的

    中定义了一个新方法
    double height_modifier = 1.5;
    
    int height = 0;
    for(Keyboard.Key key : mKeyboard.getKeys()) {
       key.height *= height_modifier;
       key.y *= height_modifier;
       height = key.height;
    }
    mKeyboard.setKeyHeight(height);
    

    我希望这会有所帮助...

    【讨论】:

    • 如果它扩展了 Keyboard 类,那么你的构造函数是什么样的?
    • 新方法好像可以成功改变按键高度,但是如何改变整体键盘高度呢?
    • 你能解释一下重写 getHeight() 并返回 getKeyHeight() * 3 的代码吗?我想不通那是为了什么。不放键盘高度是完全错误的,放好后键盘底部有一点空隙。我把它改成2倍,键盘高度完全正确!但是,这使我的底行键无法触摸..似乎有什么看不见的东西挡住了它,我无法按底行键,但我不知道为什么..
    【解决方案2】:

    在用户点击任何字符按钮后,我的键盘会更改一些键并重新绘制软键盘。我在KeyboardView 的子类上调用invalidateAllKeys() 来重绘键盘。 invalidateAllKeys() 工作正常!

    【讨论】:

      猜你喜欢
      • 2014-03-22
      • 2012-06-12
      • 2013-04-10
      • 2011-08-29
      • 2011-11-16
      • 1970-01-01
      • 2014-08-22
      • 2014-04-19
      相关资源
      最近更新 更多