17

mam zwyczaj Android klawiaturę:Android zwyczaj klawiatura popup klawiatury na długim naciśnięciu

public class CustomKeyboard extends Keyboard{...} 

    public class CustomKeyboardView extends KeyboardView{...} 

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

Na niektórych klawiszy, mam popupKeyboard i 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> 

Ale kiedy długo naciśnij przycisk "0" wyskakując klawisz z ")" pokazuje, ale to sta jesteś tam, dopóki nie naciśniesz przycisku "X" lub ")". Wygląda to tak:
My keyboard

I chcę, aby było otwarte tylko wtedy, gdy trzymam palec. Coś jak na klawiaturze Samsunga lub HTC:
Samsung keyboard

Czy ktoś może mi pomóc?

EDIT Czy można przynajmniej zmienić wygląd tego okna? Chcę mieć to samo tło i klawisze, co cała klawiatura, którą stworzyłem/

+0

ktoś ma rozwiązanie dla tej kwestii? – rKrishna

+0

Myślę, że musisz zrobić niestandardowe widoki na wszystko, jeśli chcesz dostosować klawiaturę ... Ale nie wiem jak. – filipst

+2

Ten link pomoże Ci w pełni http://stackoverflow.com/questions/7752580/creating-a-softkeyboard-with-multiple-alternate-charples-perkey – saeed

Odpowiedz

5

Możesz użyć klasy PopupWindow i wypełnić ją niestandardowym układem.

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

i na długim naciśnięciu

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

po kliknięciu w okienko można odrzucić to

popup.dismiss(); 
Powiązane problemy