2015-05-16 17 views
13

Sono curioso di sapere come posso implementare la seguente sovrapposizione su qualche pulsante o tasto premuto come mostrato nell'immagine seguente? Sto implementando la tastiera personalizzata ... ho avuto bisogno di questa cosa per lo stesso.Tastiera Android premere overlay tastiera

enter image description here

EDIT:

Così, ho implementato una tastiera come seguire utilizzando un GridView.

enter image description here

Ora, io sto cercando di mettere un po 'di sovrapposizione (al clic) come in tastiera predefinita.

Grazie :)

+0

bella domanda Voglio qualcosa di nuovo –

risposta

6

Quello che stai cercando è "anteprima tasto" Presumo che si sta utilizzando KeyboardView per creare la vostra tastiera personalizzata. È possibile abilitare l'anteprima chiave chiamando setPreviewEnabled(boolean previewEnabled) dovrebbe essere qualcosa di simile: mKeyboardView.setPreviewEnabled(true);

Edit:

penso che questo link vi aiuterà nella vostra implementazione e spiega più in dettaglio quello che stavo provando.

Per prima cosa è creare un layout per la tastiera, in genere contiene solo un 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" /> 

e quindi si crea un altro layout per l'anteprima:

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

Dopo di che si progetta la tastiera nel tuo caso qualcosa del genere:

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

Finalmente nella tua java co aumenta la visualizzazione della tastiera o la ottieni tramite il suo id se è inclusa in un frammento o in un layout di attività. e imposti la tastiera che hai progettato per questo.

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

buona fortuna.

+0

Non sto usando la vista della tastiera. Ho creato la mia tastiera utilizzando le viste. Ma per creare un'esperienza straordinaria con la pressione dei tasti, ho voluto implementare una cosa simile di sovrapposizione con le normali visualizzazioni. Grazie – sagarpatidar

+0

Non capisco cosa intendi usando le viste!Puoi aggiungere ulteriori dettagli su come stai creando il tuo keybord personalizzato? Normalmente dovresti creare un keybord xml con righe e chiavi, un layout xml per la tastiera e un altro per l'anteprima. – MAB

+0

MAB, maggiori dettagli aggiunti. – sagarpatidar

1

Utilizzare un PopupWindow per la funzionalità di anteprima chiave (in realtà ho fatto la stessa cosa nel mio ultimo progetto IME).

vi consiglio di utilizzare una classe figlia di KeyboardView perché ti offre un sacco di funtions per rendere le cose eay.Each volta il key viene premuto, il onPressed si chiama di nuovo e poi si sa che uno è premuto. E tuffati nel codice sorgente di KeyboardView, puoi imparare dove posizionare il tuo popupWindow dalla classe.

Solo un piccolo sforzo. Ma se la tua classe non deriva da KeyboardView (come l'uso di GridView), dovrai dedicare più tempo per capirlo. In ogni caso, il codice sorgente è un buon inizio.

+0

Sembra una buona idea, PopupWindow, proverò questo. Grazie. – sagarpatidar

+0

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