Подтвердить что ты не робот

Наложение клавиш клавиатуры на клавиатуре Android

Мне интересно, как я могу реализовать следующий наложение на какой-либо кнопке или нажатии клавиши, как показано на следующем изображении? Я внедряю пользовательскую клавиатуру... эта вещь нужна для того же самого.

enter image description here

EDIT:

Итак, я реализовал клавиатуру, например, используя Gridview.

enter image description here

Теперь я пытаюсь поместить некоторые наложения (по щелчку), как на клавиатуре по умолчанию.

Спасибо:)

4b9b3361

Ответ 1

Что вы ищете - это "предварительный просмотр ключа", Я предполагаю, что вы используете KeyboardView для создания пользовательской клавиатуры. Вы можете включить предварительный просмотр ключа, вызвав setPreviewEnabled (boolean previewEnabled), это должно быть что-то вроде этого: mKeyboardView.setPreviewEnabled(true);

Edit:

Я думаю, что эта ссылка поможет вам в вашей реализации и объяснит более подробно то, что я пытался.

Сначала вы создаете макет для клавиатуры, обычно он содержит только клавиатуруView:

<?xml version="1.0" encoding="UTF-8"?>
    <android.inputmethodservice.KeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/keyboard"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:keyPreviewLayout ="@layout/preview" />

И затем вы создаете еще один макет для предварительного просмотра:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:background="#ffff00"   
    android:textStyle="bold"
    android:textSize="30sp">    
</TextView>

После этого вы создаете свою клавиатуру в своем случае примерно так:

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
    android:keyWidth="10%p"
    android:horizontalGap="0px"
    android:verticalGap="0px"  
    android:keyHeight="60dp">
    <Row>
        <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/>
        <Key android:codes="50" android:keyLabel="2"/>
        <Key android:codes="51" android:keyLabel="3"/>
    </Row>
    <Row>
        <Key android:codes="52" android:keyLabel="4"/>
        <Key android:codes="53" android:keyLabel="5"/>
        <Key android:codes="54" android:keyLabel="6"/>
   </Row>
   <Row>
        <Key android:codes="55" android:keyLabel="7"/>
        <Key android:codes="56" android:keyLabel="8"/>
        <Key android:codes="57" android:keyLabel="9"/>
   </Row>
</Keyboard>

Наконец, в вашем java-коде вы раздуваете свой клавиатурный экран или получаете его по его идентификатору, если он включен в фрагмент или макет активности. и вы установили для него клавиатуру.

kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null);
keyboard = new Keyboard(this, R.xml.numeric);
kv.setKeyboard(keyboard);
kv.setOnKeyboardActionListener(this);

Желаем удачи.

Ответ 2

Используйте PopupWindow для функции предварительного просмотра ключа (на самом деле я сделал то же самое в своем последнем проекте IME).

Я рекомендую вам использовать дочерний класс KeyboardView, потому что он предлагает вам множество функций, чтобы сделать что угодно. Каждый раз при нажатии key, onPressed вызывается назад, а затем вы знаете, какой из них нажат, И погрузившись в исходный код KeyboardView, вы можете узнать, куда поместить ваш PopupWindow из класса.

Просто немного усилий. Но если ваш класс не получается из KeyboardView (например, с помощью GridView), вам придется потратить больше времени, чтобы понять его. В любом случае исходный код является хорошим началом.