Я изменяю приложение для мягкой клавиатурной программы с помощью Android-sdk. Я заметил, что клавиши алфавита, кажется, попадают, даже если я касаюсь позиции ниже ключа. В частности, если я касаюсь верхней границы клавиши «A», тогда клавиатура фактически регистрирует «Q». Кажется, что ограничивающий прямоугольник для каждого ключа простирается до пустого пространства под ним, а иногда даже имеет верхнюю часть ключа ниже.Клавиша софт-клавиатуры Android не попадает должным образом
Кроме того, я попытался изменить макет нижней строки так, чтобы клавиша пробела была больше, как показано ниже. Однако, как только я это сделаю, есть часть справа от ключа пробела, который не регистрируется, когда я касаюсь. Эта область, по-видимому, занимает 10% от ширины. Любые идеи, как я могу отладить эти проблемы?
<Row android:rowEdgeFlags="bottom">
<Key android:codes="-2" android:keyLabel="123" android:keyWidth="15%p" android:keyEdgeFlags="left"/>
<Key android:codes="32" android:keyWidth="55%p" android:isRepeatable="true"/>
<Key android:codes="46" android:keyLabel="." android:keyWidth="10%p"/>
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
</Row>
Возможно, вы захотите изучить настройку вертикальной коррекции в android.inputmethodservice.KeyboardView или даже код клавиатуры AOSP, который также может быть интересен для просмотра. –
Спасибо, я посмотрю. Любые предложения по вопросам прошивки? – user1715925
Я бы, наверное, исследовал эти ключевые граничные флаги. В версии AOSP есть какая-то интересная логика, я действительно не смотрел, что класс SDK имеет в сравнении, но настройки в вашем XML заставляют казаться, что он что-то делает. –