2

EditTextの仮想キーボードのデフォルト言語を設定する方法があれば、Androidになっていますか?EditTextの仮想キーボードのデフォルト言語を設定する方法

私はEditTextにフォーカスするたびに、英語の代わりに母国語で仮想キーボードを開きます。

私はそれがデバイス設定で何かを推測しますが、プログラムする方法があれば、Androidの開発はすばらしいでしょう。

+0

[http://stackoverflow.com/questions/2900023/change-language-programatically-in-android]これはあなたを助けるかもしれません。 – Ankita

+0

@ user2690455ありがとうございます。役に立つかもしれない。 – God

答えて

3

LocaleHelper "が必要な解決策です。アプリケーションのメインクラスでロケールを初期化するだけで済みます。その後、すべての言語の変更はそのまま残ります。アプリケーションクラスのmake次の変更で

public class MainApplication extends Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     LocaleHelper.onCreate(this, "en"); 
    } 
} 

LocalHelper.javaは次のようになります。詳細説明については

public class LocaleHelper { 

private static final String SELECTED_LANGUAGE = "Locale.Helper.Selected.Language"; 

public static void onCreate(Context context) { 
    String lang = getPersistedData(context, Locale.getDefault().getLanguage()); 
    setLocale(context, lang); 
} 

public static void onCreate(Context context, String defaultLanguage) { 
    String lang = getPersistedData(context, defaultLanguage); 
    setLocale(context, lang); 
} 

public static String getLanguage(Context context) { 
    return getPersistedData(context, Locale.getDefault().getLanguage()); 
} 

public static void setLocale(Context context, String language) { 
    persist(context, language); 
    updateResources(context, language); 
} 

private static String getPersistedData(Context context, String defaultLanguage) { 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
    return preferences.getString(SELECTED_LANGUAGE, defaultLanguage); 
} 

private static void persist(Context context, String language) { 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
    SharedPreferences.Editor editor = preferences.edit(); 

    editor.putString(SELECTED_LANGUAGE, language); 
    editor.apply(); 
} 

private static void updateResources(Context context, String language) { 
    Locale locale = new Locale(language); 
    Locale.setDefault(locale); 

    Resources resources = context.getResources(); 

    Configuration configuration = resources.getConfiguration(); 
    configuration.locale = locale; 

    resources.updateConfiguration(configuration, resources.getDisplayMetrics()); 
} 

}

あなたがthisリンクを参照してください。

ご希望の場合はお手数ですが、

+1

ありがとうございます。しかし、私は 'Application'クラスを持っていません。 – God

+1

次に、 'Application'を拡張するクラスを作成する必要があります。リンクの指示に従ってください。 –

+0

します。どうもありがとうございました。 – God

関連する問題