2014-09-08 19 views
11

Ich mag meine EditText wie machen, wenn ich schreibe Zeichen „g“ es bezogene Zuordnung individueller Charakter soll wie hier in Hindi geschrieben, es ist „जी“Zeichenzuordnung in EditText android

Ich denke, es sollte Zeichenzuordnung sein, aber mit kein Wissen jemand mir helfen kann wie das

Andere App zu tun https://play.google.com/store/apps/details?id=nichetech.hindi.editor auch wie auf diese Weise gleiche tut, ist es optional erhältlich Offline- und Online-

Online wird mit Hilfe von google Übersetzer zu tun, aber wenn ich wählen offline dann geschieht das Schreiben auf diese Weise

Hier können Sie sehen, dass Tastatur Englisch ist, aber das Schreiben in Hindi Sprache getan wird

enter image description here

Dank

Gibt es so, dass ich auf Englisch schreiben und es ist im Zusammenhang Mapping Zeichen geschrieben wird EditText nur meiner Anwendung.

Hat jemand wie auf diese Weise getan dann bitte helfen Sie mir, wie man das macht

+0

, wenn ich gut verstehen, dann können Sie Karte Buchstaben für Tastatur Buchstaben und Ziel machen, dann Override onKeyUp() o r onKeyDown() und ersetze Zeichen auf dem editText .... überprüfen Sie diese https://developer.android.com/training/keyboard-input/commands.html – Yazan

Antwort

7

Um das zu erreichen, was Sie wollen, ich würde eine HashMap von Zeichen erstellen, die andere Zeichen abzubilden. Wenn ein bestimmtes Zeichen nicht zugeordnet ist, drucken Sie es einfach aus. Hier ist ein Beispiel, das ich ertragen habe:

final HashMap<Character, Character> charMap = new HashMap<Character, Character>(); 
charMap.put('q', '1'); 
charMap.put('w', '2'); 
charMap.put('e', '3'); 
charMap.put('r', '4'); 
charMap.put('t', '5'); 
charMap.put('y', '6'); 

final EditText editText = (EditText) findViewById(R.id.editText); 

editText.addTextChangedListener(new TextWatcher() { 
    boolean replaced; 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     Log.e("TAG", start + " " + before + " " + count); 
     // Check in lower case 
     String oldStr = s.toString().toLowerCase(); 
     StringBuilder newStr = new StringBuilder(s); 

     // Loop through changed chars 
     for (int i = 0; i < count; i++) { 
      // Replace if a substitution is avaiable 
      Character replacement = charMap.get(oldStr.charAt(start + i)); 
      if (replacement != null) { 
       replaced = true; 
       newStr.setCharAt(start + i, replacement); 
      } 
     } 

     if (replaced) { 
      replaced = false; 
      editText.setText(newStr); 
      // Move cursor after the new chars 
      editText.setSelection(start + count); 
     } 

    } 

    @Override 
    public void afterTextChanged(Editable s) { 

    } 
}); 

Pro:

  • Fall Ignoriert, wenn nach einem Ersatz suchen. (Q = Q = 1)
  • Ersetzt sofort einzelne und mehrere Zeichen
  • Ist Schleife nicht die ganze Zeichenfolge
  • Kann in der Mitte eine andere Zeichenfolge ersetzen

Nachteile:

  • Sie müssen einen HashMap-Eintrag für jedes Zeichen haben, das Sie ersetzen möchten
  • ...

Als Randnotiz würde Ich mag ein paar Einschränkungen zu nennen, die von Ihnen angegebenen App „Online-Version“ hat:

  • Die Umwandlung nur erfolgt, wenn ein Raum, neue Zeile oder Interpunktionszeichen wird eingegeben.
  • Sie können Buchstaben zu bereits konvertierten Wörtern nicht hinzufügen.

Die apps "offline" Version hat auch einen kleineren Fehler:

  • Es konvertiert nicht Worte, die mit in oder geschrieben werden kopiert Swipe
+0

Hallo Danke für Ihre Antwort, aber ich spreche über OFFLINE-Modus, in Offline-Modus dort Charakter coonverting gleichzeitig, wenn ich tippe, es nicht über den Raum –

+0

@SiddhpuraAmit Die App, die Sie gegeben haben funktioniert nicht im Offline-Modus überhaupt. Mein Beispiel funktioniert jedoch unabhängig von der Internetverbindung. – Simas

+0

Hallo Es gibt Slider-Menü in dem Sie zuerst offline wählen und danach können Sie es tun, es funktioniert gut auf meinem Handy, aber nicht in genymotion –

0

Ich denke, Sie besser dran Erstellen einer eigenen * .ttf-Datei mit allen Zeichenzuordnungen. Sie können es einfach in Ihrem EditText (oder dem von Ihnen verwendeten Text-Widget) einstellen. TTF-Fonts sind in Assets/Verzeichnis (oder in jedem Verzeichnis, aus dem Sie lesen können) willkommen. Sie können Schriftart Objekt mit erstellen:

Typeface.createFromAsset(AssetManager mgr, String path)

und Einstellung mit:

textView.setTypeface(mTypeface); 
0

Key Charakter Kartendateien (.kcm-Dateien) sind verantwortlich für die Zuordnung von Kombinationen von Android Schlüsselcodes mit Modifikatoren in Unicode Zeichen. Gerätespezifische Tastenlayout-Dateien werden für alle internen (eingebauten) Eingabegeräte mit Schlüsseln benötigt, um dem System mitzuteilen, dass das Gerät nur einen speziellen Zweck hat (keine vollständige Tastatur).

Gerätespezifische Tastenlayoutdateien sind für externe Tastaturen optional und werden oft gar nicht benötigt. Das System bietet eine generische Tastenbelegung, die für viele externe Tastaturen geeignet ist.

Wenn keine gerätespezifische Tastenlayoutdatei verfügbar ist, wählt das System stattdessen einen Standard.

Die Kartendateien der Schlüsselzeichen befinden sich nach USB-Hersteller, Produkt- (und optional nach Version) ID oder nach Gerätenamen.

Die Kartendateien der Schlüsselzeichen befinden sich nach USB-Hersteller, Produkt- (und optional nach Version) ID oder nach Gerätenamen.

Angenommen, der Benutzer drückte A und SHIFT zusammen. Das System sucht zuerst nach den Eigenschaften und Verhaltensweisen, die mit KEYCODE_A verknüpft sind.

Schlüssel A { label: 'A' base: 'a' Verschiebung capslock: 'A' ctrl, alt, meta: keine }

ey ESCAPE { Base: Rückgriff BACK alt, meta: Ausweich HOME ctrl: Ausweich MENU }

Schlüssel A { Label: 'A' Nummer: '2' base: 'a' Verschiebung capslock: 'A' alt: '#' Shift + Alt, capslock + alt: keine }

Schlüsselraum { Etikett: ' Anzahl:' '' Basis : '' Verschiebung: ': '\ uef01' shift + alt: alt' '\ uef01' }

0
public void MapCharacter() { 
    this.singleChar.put((Object)"a", (Object)"\u0905"); 
    this.singleChar.put((Object)"b", (Object)"\u092c"); 
    this.singleChar.put((Object)"c", (Object)"\u091a"); 
    this.singleChar.put((Object)"d", (Object)"\u0926"); 
    this.singleChar.put((Object)"e", (Object)"\u090f"); 
    this.singleChar.put((Object)"f", (Object)"\u092b"); 
    this.singleChar.put((Object)"g", (Object)"\u0917"); 
    this.singleChar.put((Object)"h", (Object)"\u0939"); 
    this.singleChar.put((Object)"i", (Object)"\u0907"); 
    this.singleChar.put((Object)"j", (Object)"\u091c"); 
    this.singleChar.put((Object)"k", (Object)"\u0915"); 
    this.singleChar.put((Object)"l", (Object)"\u0932"); 
    this.singleChar.put((Object)"m", (Object)"\u092e"); 
    this.singleChar.put((Object)"n", (Object)"\u0928"); 
    this.singleChar.put((Object)"o", (Object)"\u0913"); 
    this.singleChar.put((Object)"p", (Object)"\u092a"); 
    this.singleChar.put((Object)"q", (Object)""); 
    this.singleChar.put((Object)"r", (Object)"\u0930"); 
    this.singleChar.put((Object)"s", (Object)"\u0938"); 
    this.singleChar.put((Object)"t", (Object)"\u0924"); 
    this.singleChar.put((Object)"u", (Object)"\u0909"); 
    this.singleChar.put((Object)"v", (Object)"\u0935"); 
    this.singleChar.put((Object)"w", (Object)"\u0935"); 
    this.singleChar.put((Object)"x", (Object)"\u0915\u094d\u0937"); 
    this.singleChar.put((Object)"y", (Object)"\u092f"); 
    this.singleChar.put((Object)"z", (Object)"\u091d"); 
    this.singleChar.put((Object)"A", (Object)"\u0906"); 
    this.singleChar.put((Object)"B", (Object)"\u092c"); 
    this.singleChar.put((Object)"C", (Object)"\u091a"); 
    this.singleChar.put((Object)"D", (Object)"\u0921"); 
    this.singleChar.put((Object)"E", (Object)"\u090d"); 
    this.singleChar.put((Object)"F", (Object)"\u092b"); 
    this.singleChar.put((Object)"G", (Object)"\u0917"); 
    this.singleChar.put((Object)"H", (Object)"\u0903"); 
    this.singleChar.put((Object)"I", (Object)"\u0908"); 
    this.singleChar.put((Object)"J", (Object)"\u091c"); 
    this.singleChar.put((Object)"K", (Object)"\u0915"); 
    this.singleChar.put((Object)"L", (Object)"\u0933"); 
    this.singleChar.put((Object)"M", (Object)"\u0902"); 
    this.singleChar.put((Object)"N", (Object)"\u0923"); 
    this.singleChar.put((Object)"O", (Object)"\u0911"); 
    this.singleChar.put((Object)"P", (Object)"\u092a"); 
    this.singleChar.put((Object)"Q", (Object)""); 
    this.singleChar.put((Object)"R", (Object)"\u0930"); 
    this.singleChar.put((Object)"S", (Object)"\u0936"); 
    this.singleChar.put((Object)"T", (Object)"\u091f"); 
    this.singleChar.put((Object)"U", (Object)"\u090a"); 
    this.singleChar.put((Object)"V", (Object)"\u0935"); 
    this.singleChar.put((Object)"W", (Object)"\u0935"); 
    this.singleChar.put((Object)"X", (Object)"\u0915\u094d\u0937"); 
    this.singleChar.put((Object)"Y", (Object)"\u092f"); 
    this.singleChar.put((Object)"Z", (Object)"\u091d"); 
    this.singleChar.put((Object)"1", (Object)"\u0967"); 
    this.singleChar.put((Object)"2", (Object)"\u0968"); 
    this.singleChar.put((Object)"3", (Object)"\u0969"); 
    this.singleChar.put((Object)"4", (Object)"\u096a"); 
    this.singleChar.put((Object)"5", (Object)"\u096b"); 
    this.singleChar.put((Object)"6", (Object)"\u096c"); 
    this.singleChar.put((Object)"7", (Object)"\u096d"); 
    this.singleChar.put((Object)"8", (Object)"\u096e"); 
    this.singleChar.put((Object)"9", (Object)"\u096f"); 
    this.singleChar.put((Object)"0", (Object)"\u0966"); 
    this.singleChar.put((Object)"#", (Object)"\u0953"); 
    this.singleChar.put((Object)"$", (Object)" \u0951"); 
    this.singleChar.put((Object)"^", (Object)"\u094d"); 
    this.singleChar.put((Object)":", (Object)"\u0903"); 
    this.delimtrChar.put((Object)" ", (Object)" "); 
    this.delimtrChar.put((Object)"!", (Object)"!"); 
    this.delimtrChar.put((Object)"@", (Object)"\u0970"); 
    this.delimtrChar.put((Object)"%", (Object)"%"); 
    this.delimtrChar.put((Object)"&", (Object)"\u093d"); 
    this.delimtrChar.put((Object)"(", (Object)"("); 
    this.delimtrChar.put((Object)")", (Object)")"); 
    this.delimtrChar.put((Object)"~", (Object)"~"); 
    this.delimtrChar.put((Object)"`", (Object)"`"); 
    this.delimtrChar.put((Object)"_", (Object)"_"); 
    this.delimtrChar.put((Object)"=", (Object)"="); 
    this.delimtrChar.put((Object)"{", (Object)"{"); 
    this.delimtrChar.put((Object)"}", (Object)"}"); 
    this.delimtrChar.put((Object)"|", (Object)"\u0964"); 
    this.delimtrChar.put((Object)"\"", (Object)"\""); 
    this.delimtrChar.put((Object)"<", (Object)"<"); 
    this.delimtrChar.put((Object)">", (Object)">"); 
    this.delimtrChar.put((Object)"?", (Object)"?"); 
    this.delimtrChar.put((Object)"+", (Object)"+"); 
    this.delimtrChar.put((Object)"-", (Object)"-"); 
    this.delimtrChar.put((Object)"[", (Object)"["); 
    this.delimtrChar.put((Object)"]", (Object)"]"); 
    this.delimtrChar.put((Object)"\\", (Object)"\\"); 
    this.delimtrChar.put((Object)";", (Object)";"); 
    this.delimtrChar.put((Object)"'", (Object)"'"); 
    this.delimtrChar.put((Object)",", (Object)","); 
    this.delimtrChar.put((Object)".", (Object)"."); 
    this.delimtrChar.put((Object)"/", (Object)"/"); 
    this.doubleChar.put((Object)"aa", (Object)"\u0906"); 
    this.doubleChar.put((Object)"ai", (Object)"\u0910"); 
    this.doubleChar.put((Object)"au", (Object)"\u0914"); 
    this.doubleChar.put((Object)"ou", (Object)"\u0914"); 
    this.doubleChar.put((Object)"ee", (Object)"\u0908"); 
    this.doubleChar.put((Object)"oo", (Object)"\u090a"); 
    this.doubleChar.put((Object)"aM", (Object)"\u0905\u0902"); 
    this.doubleChar.put((Object)"aM~", (Object)"\u0905\u0901"); 
    this.doubleChar.put((Object)"aH", (Object)"\u0905\u0903"); 
    this.doubleChar.put((Object)"a:", (Object)"\u0905\u0903"); 
    this.doubleChar.put((Object)"NG", (Object)"\u0919"); 
    this.doubleChar.put((Object)"OM", (Object)"\u0950"); 
    this.doubleChar.put((Object)"+~", (Object)"\u5350"); 
    this.doubleChar.put((Object)"Rs", (Object)"\u20b9"); 
    this.doubleChar.put((Object)"||", (Object)"\u0965"); 
    this.doubleChar.put((Object)"NY", (Object)"\u091e"); 
    this.doubleChar.put((Object)"Gy", (Object)"\u091c\u094d\u091e"); 
    this.doubleChar.put((Object)"kh", (Object)"\u0916"); 
    this.doubleChar.put((Object)"gh", (Object)"\u0918"); 
    this.doubleChar.put((Object)"Ch", (Object)"\u091b"); 
    this.doubleChar.put((Object)"chh", (Object)"\u091b"); 
    this.doubleChar.put((Object)"ch", (Object)"\u091a"); 
    this.doubleChar.put((Object)"th", (Object)"\u0925"); 
    this.doubleChar.put((Object)"Th", (Object)"\u0920"); 
    this.doubleChar.put((Object)"dh", (Object)"\u0927"); 
    this.doubleChar.put((Object)"Dh", (Object)"\u0922"); 
    this.doubleChar.put((Object)"jh", (Object)"\u091d"); 
    this.doubleChar.put((Object)"ph", (Object)"\u092b"); 
    this.doubleChar.put((Object)"bh", (Object)"\u092d"); 
    this.doubleChar.put((Object)"sh", (Object)"\u0936"); 
    this.doubleChar.put((Object)"Sh", (Object)"\u0937"); 
    this.doubleChar.put((Object)"kSh", (Object)"\u0915\u094d\u0937"); 
    this.doubleChar.put((Object)"Ri", (Object)"\u090b"); 
    this.doubleChar.put((Object)"RI", (Object)"\u0960"); 
    this.doubleChar.put((Object)"Li~", (Object)"\u090c"); 
    this.doubleChar.put((Object)"LI~", (Object)"\u0961"); 
    this.doubleChar.put((Object)"@@", (Object)"\u0971"); 
    this.doubleChar.put((Object)"$$", (Object)"\u0952"); 
    this.matraChar.put((Object)"a", (Object)"\u093e"); 
    this.matraChar.put((Object)"A", (Object)"\u093e"); 
    this.matraChar.put((Object)"i", (Object)"\u093f"); 
    this.matraChar.put((Object)"I", (Object)"\u0940"); 
    this.matraChar.put((Object)"u", (Object)"\u0941"); 
    this.matraChar.put((Object)"U", (Object)"\u0942"); 
    this.matraChar.put((Object)"e", (Object)"\u0947"); 
    this.matraChar.put((Object)"E", (Object)"\u0945"); 
    this.matraChar.put((Object)"o", (Object)"\u094b"); 
    this.matraChar.put((Object)"O", (Object)"\u0949"); 
    this.matraChar.put((Object)"ai", (Object)"\u0948"); 
    this.matraChar.put((Object)"au", (Object)"\u094c"); 
    this.matraChar.put((Object)"ou", (Object)"\u094c"); 
    this.matraChar.put((Object)"aa", (Object)"\u093e"); 
    this.matraChar.put((Object)"oo", (Object)"\u0942"); 
    this.matraChar.put((Object)"ee", (Object)"\u0940"); 
    this.matraChar.put((Object)"*", (Object)"\u093c"); 
    this.matraChar.put((Object)"M~", (Object)"\u0901"); 
    this.matraChar.put((Object)"r", (Object)"\u094d\u0930"); 
    this.matraChar.put((Object)"R", (Object)"\u0930\u094d"); 
    this.matraChar.put((Object)"Ri", (Object)"\u0943"); 
    this.matraChar.put((Object)"RI", (Object)"\u0944"); 
    this.matraChar.put((Object)"Li~", (Object)"\u0962"); 
    this.matraChar.put((Object)"LI~", (Object)"\u0963"); 
}