/ / Android benutzerdefinierte Tastatur Popup-Tastatur auf lange drücken - Android, Tastatur, Android-Softkeyboard, Tastatur-Ereignisse, Android-Input-Methode

Android benutzerdefinierte Tastatur Popup-Tastatur auf lange drücken - Android, Tastatur, Android-Softkeyboard, Tastatur-Ereignisse, Android-Input-Methode

Ich habe eine benutzerdefinierte Android-Tastatur:

    public class CustomKeyboard extends Keyboard{...}

public class CustomKeyboardView extends KeyboardView{...}

public class CustomKeyboardIME extends InputMethodService implements KeyboardView.OnKeyboardActionListener{...}

Auf einigen Schlüsseln habe ich popupKeyboard und popupCharacters:

<Key android:codes="144" android:keyLabel="0" android:popupKeyboard="@xml/key_popup" android:popupCharacters=")" android:keyEdgeFlags="right"/>

xml / key_popup.xml:

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="10%p"
android:horizontalGap="0px"
android:verticalGap="0px"
android:keyHeight="@dimen/key_height" >
</Keyboard>

Aber wenn ich lange auf "0" tippe Popup-Taste mit ")" zeigt, aber es bleibt dort, bis ich die Taste "X" oder ")" drücken. Es sieht aus wie das:
Meine Tastatur

Und ich möchte, dass es nur geöffnet wird, während ich einen Finger halte. Etwas wie auf Samsung oder HTC Tastatur:
Samsung Tastatur

Kann mir bitte jemand helfen?

BEARBEITEN Ist es zumindest möglich, das Aussehen dieses Popups zu ändern? Ich möchte, dass es denselben Hintergrund und dieselben Tasten wie die gesamte Tastatur hat, die ich gemacht habe.

Antworten:

5 für die Antwort № 1

Sie können verwenden PopupWindow Klasse und füllen Sie es mit benutzerdefiniertem Layout.

View custom = LayoutInflater.from(context)
.inflate(R.layout.your_layout, new FrameLayout(context));
PopupWindow popup = new PopupWindow(context);
popup.setContentView(custom);

und auf lange drücken

//Get x,y based on the touch position
//Get width, height based on your layout
if(popup.isShowing()){
popup.update(x, y, width, height);
} else {
popup.setWidth(width);
popup.setHeight(height);
popup.showAtLocation(yourKeyboardView, Gravity.NO_GRAVITY, x, y);
}

Wenn Sie auf das Popup klicken, können Sie es schließen

popup.dismiss();