2015-05-16 4 views
13

Ich bin neugierig, wie kann ich das folgende Overlay auf einige Tasten oder drücken Sie die Taste wie in der folgenden Abbildung dargestellt implementieren? Ich implementiere benutzerdefinierte Tastatur ... benötigt diese Sache für das gleiche.Android Keypad Taste drücken Overlay

enter image description here

EDIT:

So habe ich eine Tastatur wie implementiert eine Gridview folgende verwenden. Jetzt

enter image description here

, Ich versuche, einige Overlay zu setzen (auf Klick) als in Standard-Tastatur.

Thanks :)

+0

schöne Frage Ich möchte etwas Neues –

Antwort

6

Was Sie suchen ist „key Vorschau“ Ich nehme an, Sie KeyboardView verwenden Ihre benutzerdefinierten Tastatur zu erstellen. Sie können den Schlüssel Vorschau aktivieren, indem setPreviewEnabled(boolean previewEnabled) nannte es sollte so ähnlich sein: mKeyboardView.setPreviewEnabled(true);

Edit:

ich denke, das link werden Sie in Ihrer Implementierung helfen und erklärt, mehr im Detail, was ich wollte.

Zuerst erstellen Sie ein Layout für die Tastatur, in der Regel enthält es nur eine keyboardView:

<?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" /> 

Und Sie dann ein anderes Layout für die Vorschau erstellen:

<?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> 

Danach können Sie entwerfen Sie Ihre Tastatur in Ihrem Fall etwas wie das:

<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> 

Endlich in Ihrem Java-Co Wenn Sie das KeyboardView aufblasen, erhalten Sie es über seine ID, wenn es in einem Fragment- oder Aktivitätslayout enthalten ist. und Sie legen die Tastatur fest, die Sie dafür entworfen haben.

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

viel Glück.

+0

Ich benutze keine Tastaturansicht. Ich habe meine eigene Tastatur mit Ansichten erstellt. Aber um eine tolle Erfahrung mit Tastendrücken zu erstellen, wollte ich eine solche Überlagerung mit normalen Ansichten pressen. Danke – sagarpatidar

+0

Ich verstehe nicht, was Sie meinen, indem Sie Ansichten verwenden!Können Sie weitere Details dazu hinzufügen, wie Sie Ihr benutzerdefiniertes Keyboard erstellen? Normalerweise müssten Sie ein XML-Keyboard mit Zeilen und Schlüsseln, ein XML-Layout für die Tastatur und ein anderes für die Vorschau erstellen. – MAB

+0

MAB, weitere Details hinzugefügt. – sagarpatidar

1

Verwenden Sie eine PopupWindow für die Schlüsselvorschau-Funktion (Eigentlich tat ich das gleiche bei meinem letzten IME-Projekt).

Ich empfehle Ihnen, ein Kind Klasse von KeyboardView verwenden, weil es Ihnen viel funtions bietet Dinge eay.Each Zeit, um die key gedrückt wird, wird die onPressed zurückgerufen und dann wissen Sie, welche gedrückt wird. Und tauchen Sie in den Quellcode von KeyboardView, können Sie lernen, wo Sie Ihre popupWindow aus der Klasse platzieren.

Nur ein kleiner Aufwand. Aber wenn Ihre Klasse nicht von KeyboardView (wie mit einem GridView) abgeleitet wird, müssen Sie mehr Zeit nehmen, um es herauszufinden. Wie auch immer, der Quellcode ist ein guter Anfang.

+0

Klingt wie eine gute Idee, das PopupWindow, ich werde dieses versuchen. Vielen Dank. – sagarpatidar

+0

http://stackoverflow.com/questions/9350654/popup-keyboard-issue-in-android-when-column-limits-are-specified siehe: –