2014-10-07 87 views
4

我在developer.android.com上關注了輸入法,並使用SoftKeyboard示例應用程序進行了演示。這些共同提供了關於創建簡單鍵盤的足夠信息。創建android彈出式鍵盤

我用「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> 

我對popup有疑問。

  1. 我希望顯示彈出鍵盤中心。但彈出顯示在按下的鍵附近。 是否有任何想法顯示在鍵盤中心彈出?

  2. 當長按鍵時,彈出顯示。 我希望在短按時顯示彈出窗口。有什麼想法?

如果有人知道解決方案,請幫助我。

+0

你遵循:http://stackoverflow.com/questions/29390175/android-custom-keyboard-popup-keyboard-on-long-press http://stackoverflow.com/questions/3514392/android-ime-showing -a-custom-pop-up-dialog-like-swype-keyboard-which-can-ente/6166857#6166857和http://stackoverflow.com/questions/5684076/how-do-i-make-a-view -float-above-other-views-in-an-ime – 2015-09-16 06:04:29

+0

我這個鏈接可以幫助你 http://stackoverflow.com/questions/7752580/creating-a-softkeyboard-with-multiple-alternate-characters-per-鍵 – saeed 2015-10-15 10:30:09

回答

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並獲得基於觸摸位置。