Создание всплывающей клавиатуры Android

Я следил за примерами на сайте developer.android.com относительно методов ввода и играл с образцом приложения SoftKeyboard. Вместе они дают более чем достаточно информации о создании простой клавиатуры.

Я сделал всплывающую клавиатуру, используя «android: popupKeyboard».

<Row android:keyHeight="@dimen/key_height"
    android:id="@+id/label"
>
    <Key android:codes="97" android:keyLabel="a" android:horizontalGap="@dimen/horizontal_border_gap" 
            android:keyEdgeFlags="left" android:keyBackground="@drawable/key_btn_l" android:popupKeyboard="@xml/popup"/>
    <Key android:codes="115" android:keyLabel="s" android:keyBackground="@drawable/key_btn_l"/>
    <Key android:codes="100" android:keyLabel="d" android:keyBackground="@drawable/key_btn_l"/>
    <Key android:codes="102" android:keyLabel="f" android:keyBackground="@drawable/key_btn_a"/>
    <Key android:codes="103" android:keyLabel="g" android:keyBackground="@drawable/key_btn_l" android:popupKeyboard="@xml/popup"/>
    <Key android:codes="104" android:keyLabel="h" android:keyBackground="@drawable/key_btn_a"/>
    <Key android:codes="106" android:keyLabel="j" android:keyBackground="@drawable/key_btn_a"/>
    <Key android:codes="107" android:keyLabel="k" android:keyBackground="@drawable/key_btn_a"/>
    <Key android:codes="108" android:keyLabel="l" android:keyBackground="@drawable/key_btn_l"/>
    <Key android:codes="45" android:keyLabel="-" android:keyEdgeFlags="right" android:keyBackground="@drawable/key_btn_a"/>
</Row>

У меня есть вопрос о всплывающем окне.

  1. Я хочу показать всплывающий центр клавиатуры. но всплывающее окно отображается рядом с нажатой клавишей. Есть ли идея показать всплывающее окно в центре клавиатуры?

  2. при длительном нажатии клавиши отображается всплывающее окно. Я хочу показывать всплывающее окно при коротком нажатии. есть идея?

Если кто-нибудь знает решение, пожалуйста, помогите мне.


person Jungoo    schedule 07.10.2014    source источник
comment
вы следуете: stackoverflow .com/questions/29390175/ stackoverflow.com/questions/3514392/ и stackoverflow.com/questions/5684076/   -  person Sonu Kumar    schedule 16.09.2015
comment
Я думаю, что эта ссылка поможет вам stackoverflow.com/questions/7752580/   -  person saeed    schedule 15.10.2015


Ответы (1)


Всплывающее окно по умолчанию слабо настраивается, но вы можете создать свое собственное всплывающее окно для своей клавиатуры и настроить все, что хотите. Я думаю, вы можете сделать это с помощью Dialog и PopupWindow, но PopupWindow в этом случае лучше всего.

Создайте свой собственный вид клавиатуры, затем вы можете использовать такой метод, как onLongPress или onTouchEvent, если вы используете onTouchEvent, вы можете подсчитать время нажатия клавиши, а затем показать свое всплывающее окно.

Чтобы создать всплывающее окно:

View view = LayoutInflater.from(context)
        .inflate(R.layout.popup_layout, new FrameLayout(context));
popup = new PopupWindow(context);
popup.setContentView(view);
popup.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
popup.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
popup.showAtLocation(this, Gravity.CENTER, x, y);

Создайте переменные для x и y и получите на основе положения касания.

person Ricardo A.    schedule 21.01.2016