2016-04-19 11 views
0

Ich muss jede Zeile oder Schlüssel in einer Zeile identifizieren.So identifizieren Sie eine Zeile oder einen Schlüssel in Android-Tastatur

Da Zeile oder Schlüssel kein Attribut "id" haben, können wir sie nicht mit findViewById finden.

Ich frage mich, gibt es eine Möglichkeit, Zeilen und Tasten in der Tastatur zu identifizieren. Sie können die Xml-Datei der Tastatur unten finden.

<?xml version="1.0" encoding="utf-8"?> 
<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"/> 
    <Key android:codes="52" android:keyLabel="4"/> 
    <Key android:codes="53" android:keyLabel="5"/> 
    <Key android:codes="54" android:keyLabel="6"/> 
    <Key android:codes="55" android:keyLabel="7"/> 
    <Key android:codes="56" android:keyLabel="8"/> 
    <Key android:codes="57" android:keyLabel="9"/> 
    <Key android:codes="48" android:keyLabel="0" android:keyEdgeFlags="right"/> 

<Row> 
    <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/> 
    <Key android:codes="119" android:keyLabel="w"/> 
    <Key android:codes="101" android:keyLabel="e"/> 
    <Key android:codes="114" android:keyLabel="r"/> 
    <Key android:codes="116" android:keyLabel="t"/> 
    <Key android:codes="121" android:keyLabel="y"/> 
    <Key android:codes="117" android:keyLabel="u"/> 
    <Key android:codes="105" android:keyLabel="i"/> 
    <Key android:codes="111" android:keyLabel="o"/> 
    <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/> 
</Row> 
<Row> 
    <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left"/> 
    <Key android:codes="115" android:keyLabel="s"/> 
    <Key android:codes="100" android:keyLabel="d"/> 
    <Key android:codes="102" android:keyLabel="f"/> 
    <Key android:codes="103" android:keyLabel="g"/> 
    <Key android:codes="104" android:keyLabel="h"/> 
    <Key android:codes="106" android:keyLabel="j"/> 
    <Key android:codes="107" android:keyLabel="k"/> 
    <Key android:codes="108" android:keyLabel="l"/> 
    <Key android:codes="35,64" android:keyLabel="\# \@" android:keyEdgeFlags="right"/> 
</Row> 
<Row> 
    <Key android:codes="-1" android:keyLabel="CAPS" android:keyEdgeFlags="left"/> 
    <Key android:codes="122" android:keyLabel="z"/> 
    <Key android:codes="120" android:keyLabel="x"/> 
    <Key android:codes="99" android:keyLabel="c"/> 
    <Key android:codes="118" android:keyLabel="v"/> 
    <Key android:codes="98" android:keyLabel="b"/> 
    <Key android:codes="110" android:keyLabel="n"/> 
    <Key android:codes="109" android:keyLabel="m"/> 
    <Key android:codes="46" android:keyLabel="."/> 
    <Key android:codes="63,33,58" android:keyLabel="\? ! :" android:keyEdgeFlags="right"/> 
</Row> 
<Row android:rowEdgeFlags="bottom"> 
    <Key android:codes="44" android:keyLabel="," android:keyWidth="10%p" android:keyEdgeFlags="left"/> 
    <Key android:codes="47" android:keyLabel="/" android:keyWidth="10%p" /> 
    <Key android:codes="32" android:keyLabel="SPACE" android:keyWidth="40%p" android:isRepeatable="true"/> 
    <Key android:codes="-5" android:keyLabel="DEL" android:keyWidth="20%p" android:isRepeatable="true"/> 
    <Key android:codes="-4" android:keyLabel="DONE" android:keyWidth="20%p" android:keyEdgeFlags="right"/> 
</Row> 
</Row> 

Vielen Dank im Voraus

Antwort

0

Es hängt davon ab, was Sie durch die Identifizierung der Tasten der Tastatur tun mögen.

Wenn Sie das Aussehen der Tasten ändern möchten, können Sie die Liste der Schlüssel in onDraw(Canvas canvas) Methode Ihrer KeyboardView Klasse erhalten können (public class YoursKeyboardView extends KeyboardView {...}):

@Override 
public void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    List<Key> keys = getKeyboard().getKeys(); 
    for (Key key : keys) { 
     switch (key.codes[0]) { 
      //Your Key Codes... 
     } 
    } 
} 

, die Ihre Schlüssel durch die android:codes="[your key code]" identifizieren Sie die definiert in Ihrem xml

Oder wie dieser, wo Sie die Etiketten Ihrer Schlüssel auf lange drücken außer Kraft setzen möchten.

@Override 
protected boolean onLongPress(Key key) { 
    switch (key.codes[0]) { 
     //Your Key Codes... 
    } 

    return super.onLongPress(key); 
}