2017-08-14 5 views
0

edittextに入力テキストのロケールが何であるか知りたいです! しかし、私はキーボードのロケールを取得しようとしましたが、それは役に立ちませんでした。 私はedittextに英語を入力しないので、助けてください! 英語を入力できないことをユーザーに知ってもらいたい!androidの文字列のロケールを取得するには?

私の悪い英語のために申し訳ありません!ここで

は私のコードです:

edtUsernameLogin.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
     } 

     @Override 
     public void afterTextChanged(Editable editable) { 
      if (editable.toString().isEmpty()) { 
       mtfUsernameLogin.setLabelColor(G.resources.getColor(R.color.cpb_white), "نام کاربری"); 
      } else { 
       String locale = G.inputMethodManager.getCurrentInputMethodSubtype().getLocale(); 
       if (locale.equals("fa") || locale.equals("ar")) { 
        mtfUsernameLogin.setLabelColor(G.resources.getColor(R.color.sPink), "نام کاربری باید انگلیسی باشد !"); 
       } else { 
        mtfUsernameLogin.setLabelColor(G.resources.getColor(R.color.sGreen), "نام کاربری"); 
       } 
      } 
     } 
    }); 
+1

私が正しく理解していれば、uは、キーボードを開きたいです電話の言語ごとに? –

+1

IMHOは、デフォルトのデバイス言語を取得するか、またはedittextに入力されたテキストから言語を検出します – uguboz

+4

あなたは正確に何をしようとしていますか?彼が決めるならば、ユーザーが英語でタイピングするのを止めるのは難しい。ラテン文字を許可しないフィルタを設定することはできますが、言語がそれらを使用していない場合にのみ機能し、バイリンガルユーザーやテクニカルまたは専門用語として英語を使用するユーザーには迷惑になります。 –

答えて

0

ソリューションは、次のとおりです。

InputFilter usernameFilter = new InputFilter() { 
     @Override 
     public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
      String blockCharacterSet = " اآبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی"; 
      if (blockCharacterSet.contains(source)) { 
       edtNameEdit.setHintTextColor(getResources().getColor(R.color.grey)); 
       edtNameEdit.setHint("نام و نام خانوادگی"); 
       return source.toString(); 
      } else { 
       edtNameEdit.setHintTextColor(getResources().getColor(R.color.sPink)); 
       edtNameEdit.setHint("نام و نام خانوادگی باید فارسی باشد!"); 
       return ""; 
      } 
     } 
    }; 
    edtNameEdit.setFilters(new InputFilter[]{usernameFilter}); 

そして重要な行:

edtNameEdit.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); 
関連する問題