17

Ho tastiera Android personalizzata:Android tastiera personalizzata tastiera pop-up sulla pressione lunga

public class CustomKeyboard extends Keyboard{...} 

    public class CustomKeyboardView extends KeyboardView{...} 

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

Su alcuni tasti, ho popupKeyboard e 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> 

Ma quando I longPress sul tasto "0" popup con ")" mostra, ma è sta Sì fino a quando non premo il tasto "X" o il carattere ")". Assomiglia a questo:
My keyboard

E voglio che venga aperto solo mentre sto tenendo un dito sopra. Qualcosa di simile sulla tastiera Samsung o HTC:
Samsung keyboard

Qualcuno può aiutarmi per favore?

EDIT È almeno possibile modificare l'aspetto di questo popup? Voglio avere lo stesso sfondo e i tasti dell'intera tastiera che ho creato/

+0

Qualcuno ha una soluzione per questo problema? – rKrishna

+0

Penso che devi fare visualizzazioni personalizzate per tutto se vuoi personalizzare la tastiera ... Ma non so come. – filipst

+2

Questo link ti aiuta a http://stackoverflow.com/questions/7752580/creating-a-softkeyboard-with-multiple-alternate-characters-per-key – saeed

risposta

5

È possibile utilizzare la classe PopupWindow e popolarla con un layout personalizzato.

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

e premere a lungo

//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); 
} 

Al clic nel popup si può respingerlo

popup.dismiss();