2014-09-18 9 views
11

Ich benutze Tastaturansicht, um meine eigene Tastatur zu haben.Popup der Taste in einer benutzerdefinierten Tastatur gedrückt

funktioniert gut, aber ich kann den Effekt der Vergrößerung der Taste nicht tun, wie auch die Android-Tastatur

zoom image

Dies sind die Teile, die

<android.inputmethodservice.KeyboardView 
     android:id="@+id/keyboardview" 
     style="@style/Widget.KeyboardView" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:focusable="true" 
     android:focusableInTouchMode="true" 
     android:shadowRadius="0" 
     android:visibility="visible" /> 

verwenden.

<style name="Widget.KeyboardView" parent="android:Widget.KeyboardView"> 
      <item name="android:background">@drawable/naranja</item> 
      <item name="android:keyBackground">@drawable/naranja</item> 
      <item name="android:keyTextSize">40sp</item> 
      <item name="android:keyTextColor">#d35400</item> 
      <item name="android:keyPreviewLayout">@layout/keyboard_popup_keyboard</item> 
      <item name="android:keyPreviewOffset">12dp</item> 
      <item name="android:keyPreviewHeight">80dp</item> 
      <item name="android:popupLayout">@layout/keyboard_popup_keyboard</item> 
     </style> 

.

XML /: Pop-up

<?xml version="1.0" encoding="utf-8"?> 
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" 
    android:keyWidth="10%p" 
    android:keyHeight="10%p"> 
</Keyboard> 

Reihen

 <Key 
       android:codes="81" 
       android:keyEdgeFlags="left" 
       android:keyLabel="Q" 
       android:popupCharacters="Q" 
       android:popupKeyboard="@xml/popup" /> 

    etc... 

ich mit OnKey Methode versucht haben, auch aus der XML. Aber ohne Erfolg.

Antwort

11

Um nur die vergrößerte Vorschau anzuzeigen, sollte KeyboardView dies standardmäßig tun. Sie möchten keinen popupKeyboard-Wert festlegen, da dies für eine spezielle Minitastatur gilt, die bei langen Drücken angezeigt wird.

Ich nehme an, Sie folgten this tutorial. Beachten Sie diese Zeilen in Abschnitt 3.3:

// Do not show the preview balloons 
mKeyboardView.setPreviewEnabled(false); 

Statt diese auf true.

Komplettlösung

In Layout Ihrer Tätigkeit suchen:

<android.inputmethodservice.KeyboardView 
    android:id="@+id/keyboardview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:keyPreviewOffset="12dp" 
    android:keyPreviewLayout="@layout/kbpreview" 
    android:visibility="visible" /> 

Die wichtigen Eigenschaften sind hier keyPreviewLayout, keyPreviewOffset und keyPreviewHeight.

Layout/kbpreview.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:gb="http://schemas.android.com/apk/res-auto" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:background="@color/red" 
    android:textSize="30dp" /> 

xml/kb.xml

<?xml version="1.0" encoding="utf-8"?> 
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" 
    android:keyWidth="12.50%p" 
    android:keyHeight="10%p" > 

    <Row> 
     <Key android:codes="55" android:keyLabel="7" android:keyEdgeFlags="left" /> 
     <Key android:codes="56" android:keyLabel="8" /> 
     <Key android:codes="57" android:keyLabel="9" /> 
     <Key android:codes="65" android:keyLabel="A" android:horizontalGap="6.25%p" /> 
     <Key android:codes="66" android:keyLabel="B" /> 
     <Key android:codes="55006" android:keyLabel="CLR" android:keyEdgeFlags="right"/> 
    </Row> 

    <!-- and whatever else... --> 

</Keyboard> 

In Ihrem Aktivitätscode

Keyboard mKeyboard = new Keyboard(this, R.xml.kb); 

    // Lookup the KeyboardView 
    KeyboardView mKeyboardView = (KeyboardView) findViewById(R.id.keyboardview); 

    // Attach the keyboard to the view 
    mKeyboardView.setKeyboard(mKeyboard); 

    // Key listener required 
    mKeyboardView.setOnKeyboardActionListener(myListener); 

Ergebnis

mit der '5' Taste gedrückt:

enter image description here

Sie auch die KeyboardView source code zu überprüfen, es nützlich finden.

+0

ich möchte keypreview onLong drücken event of keyboardview ist das möglich –