创建android弹出键盘

时间:2014-10-07 10:03:19

标签: android keyboard popup ime

我已经关注了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. 长按键时会显示弹出窗口。 我希望在短按时显示弹出窗口。有什么想法吗?

  3. 如果有人知道解决方案,请帮助我。

1 个答案:

答案 0 :(得分:0)

默认弹出窗口可自定义,但您可以为键盘创建自己的弹出窗口并自定义所需的全部内容。我认为你可以使用Dialog和PopupWindow来做到这一点,但PopupWindow在这种情况下是最好的。

创建自己的keyboardView,然后你可以使用onLongPress或onTouchEvent之类的方法,如果使用onTouchEvent,你可以计算按下键的时间,然后显示你的popupWindow。

创建popupWindow:

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创建变量,并根据触摸位置获取。