2014-09-08 17 views
11

Chcę, aby mój EditText jak kiedy piszę znaku „G” jest to związane mapowanie niestandardowych znaków powinny napisane jak tutaj Hindi to „जी”mapowania znaków w EditText android

myślę, że nie powinno być odwzorowaniem postaci, ale o brak wiedzy może ktoś mi pomóc jak to zrobić

Inne aplikacja https://play.google.com/store/apps/details?id=nichetech.hindi.editor jest również robi to samo jak ten sposób, istnieje opcja dostępna w trybie offline jak i online

online robi z pomocą google translator ale jeśli mam wybrać Offline następnie pisanie odbywa się w ten sposób

Tutaj można zobaczyć, że klawiatura jest angielski, ale pisanie odbywa się w języku hindi

enter image description here

Dzięki

Czy istnieje sposób, że piszę w języku angielskim i jest to związane charakter mapowanie będzie napisany w EditText tylko mojej aplikacji.

Czy ktoś zrobił się ten sposób, to proszę mi pomóc, jak to zrobić

+0

jeśli dobrze rozumiem, to można zrobić mapę do liter na klawiaturze i listów docelowych, a następnie zastąp onKeyUp() o r onKeyDown() i zastąpienie znaku w editText .... sprawdź to https://developer.android.com/training/keyboard-input/commands.html – Yazan

Odpowiedz

7

Aby osiągnąć to, co jesteś po, by utworzyć HashMap o znakach, które map do innych znaków. Jeśli jakiś konkretny znak nie jest odwzorowany, po prostu go wydrukuj. Oto przykład mam znosić:

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) { 

    } 
}); 

Zalety:

  • Ignoruje przypadek, kiedy szuka zastępstwa. (P = P = 1)
  • natychmiast zastępuje pojedyncze i wielokrotne znaków
  • Nie pętli cały ciąg
  • można zastąpić w środku innego łańcucha

Wady:

  • Musisz mieć wpis HashMap dla każdej litery, którą chcesz zastąpić
  • ...

Jako marginesie chciałbym wymienić kilka ograniczeń, które „w wersji online” Twojego danego app zawiera:

  • konwersja jest wykonywana tylko wtedy, gdy przestrzeń, nowa linia lub znak interpunkcyjny zostanie wprowadzony.
  • Nie można dodawać liter do już skonwertowanych słów.

apps „offline” wersja posiada również drobny błąd:

  • nie konwertuje słowa, które są skopiowane lub pisemnych z Swipe
+0

Witam Dziękuję za odpowiedź, ale mówię o trybie OFFLINE, w W trybie offline znak ten koonwertuje się w tym samym czasie, gdy wpisuję, nie chodzi o przestrzeń. –

+0

@SiddhpuraAmit Podana aplikacja nie działa w ogóle w trybie offline. Jednak mój przykład będzie działał niezależnie od połączenia internetowego. – Simas

+0

Witam Dostępne jest menu suwaków, w którym najpierw wybierasz tryb offline, a potem możesz to zrobić, działa dobrze na moim telefonie, ale nie w genymotion. –

0

Chyba jesteś lepiej patrząc na tworzenie własnego pliku * .ttf z wszystkimi mapowaniami znaków. Możesz po prostu ustawić go w EditText (lub jakimkolwiek widżecie tekstowym, którego używasz). Czcionki TTF są mile widziane w katalogu assets/(lub katalogu, z którego można odczytać). Można utworzyć obiektu Typeface z:

Typeface.createFromAsset(AssetManager mgr, String path)

i ustawienie go:

textView.setTypeface(mTypeface); 
0

plików kluczy postaci map (pliki .kcm) są odpowiedzialne za mapowania kombinacji z Androidem kluczowych kodów z modyfikatorów do Unicode characters.Device-specific pliki układu klawiatury są wymagane dla wszystkich wewnętrznych (wbudowanych) urządzeń wejściowych, które mają klucze, jeśli tylko po to, aby powiedzieć systemowi, że urządzenie jest przeznaczone wyłącznie do celów specjalnych (nie jest to pełna klawiatura).

Pliki układów klawiszy specyficzne dla urządzenia są opcjonalne dla klawiatur zewnętrznych i często nie są w ogóle potrzebne. System udostępnia ogólną mapę znaków, która jest odpowiednia dla wielu klawiatur zewnętrznych.

Jeśli nie jest dostępny żaden plik układu klawiatury dla danego urządzenia, wówczas system wybierze wartość domyślną.

Pliki z mapami znaków postaci znajdują się za pośrednictwem dostawcy USB, nazwy produktu (i wersji opcjonalnej) lub nazwy urządzenia wejściowego.

Pliki z mapami znaków postaci znajdują się za pośrednictwem dostawcy USB, nazwy produktu (i wersji opcjonalnej) lub nazwy urządzenia wejściowego.

Załóżmy, że użytkownik nacisnął A i SHIFT razem. System najpierw lokalizuje zestaw właściwości i zachowań powiązanych z KEYCODE_A.

Klucz { label: 'A' podstawa: 'a' shift, CapsLock: 'A' ctrl, alt, meta: brak }

ey ESCAPE { baza: Przenieś BACK alt, meta: awaryjna HOME ctrl: awaryjna MENU }

klucz { label: 'A' numer: '2' podstawa: 'a' shift, CapsLock: 'A' alt: '#' Shift + Alt, CapsLock + alt: brak }

spacja { etykieta: '' numer: '' podstawa : '' zmiana: '' alt: '\ uef01' shift + 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"); 
}