2016-05-12 69 views
1

我想獲取語言和輸入設置下的語言列表。 我已經能夠獲得設備支持的語言列表,但這是一個巨大的列表。這是我的代碼來獲取列表,但給了我一個巨大的列表。我只想顯示語言和輸入設置下顯示的語言。如何獲取語言和輸入設置下顯示的語言列表

Locale[] locales = Locale.getAvailableLocales(); 
     ArrayList<String> localcountries=new ArrayList<String>(); 
     for(Locale l:locales) 
     { 
      localcountries.add(l.getDisplayLanguage().toString()); 
     } 
String[] languages=(String[]) localcountries.toArray(new String[localcountries.size()]); 
+0

對不起,我不明白你,你可以更明確嗎?你期望得到什麼? –

+0

是的,現在當你進入你的設備設置,你會看到設置語言和輸入裏面,你有語言點擊你將得到的語言列表。 – tanmeet

+0

我希望在我的應用中獲得相同的列表 – tanmeet

回答

0

只需使用LinkedHashSet插入語言..由最終你會得到所有的語言不重複

LinkedHashSet<String> hashSet = new LinkedHashSet<String>(); 
      Locale[] locales = Locale.getAvailableLocales(); 
      for(Locale l:locales) 
      { 
       hashSet.add(l.getDisplayLanguage()); 
      } 

祝你好運,「。

+0

我的目標不是去除重複項。正如我所提到的,我希望獲得與我在語言和輸入設置下獲得的列表相同的列表我設置了我的設備language.if你去你的設備設置甚至英語來了很多次。所以使用hashset不是解決方案。我再次說我的目標是獲得語言和輸入設置下顯示在設備設置中的相同語言。 – tanmeet

0

我認爲你正在尋找這樣的事情..希望這會有所幫助我的朋友;)

Locale[] locales = Locale.getAvailableLocales(); 
    ArrayList<String> localCountries = new ArrayList<String>(); 
    for(Locale l:locales) 
    { 
     localCountries.add(l.getDisplayLanguage() + " (" + l.getDisplayCountry() + ")"); 
    } 
System.out.println(localCountries.subList(1, localCountries.size())); 
+0

沒有兄弟,我沒有找到this.This將給我只是郎和國家我想要的是在langauge和輸入設置下顯示的語言列表。檢查您的設備設置一次。 – tanmeet

+0

哦,我的天啊... http://stackoverflow.com/questions/7973023/what-is-the-list-of-supported-languages-locales-on-android希望它是你正在尋找的... –

+0

不,我不是在尋找那個,但是我已經完成了我腦海裏的很多事情之後所需要的。 – tanmeet

0

最後我得到了我一直在尋找後很多腦hamering.this的給我的名單被下的langauge和輸入設置顯示漢語語言

public void getLangs() 
    { 
     String[] systemLocaleIetfLanguageTags = getAssets().getLocales(); 
     Arrays.sort(systemLocaleIetfLanguageTags); 
     this.data = new ArrayList(); 
     for (String ietfLanguageTag : systemLocaleIetfLanguageTags) 
     { 
      if (ietfLanguageTag != null && ietfLanguageTag.length() == 5) 
      { 
       this.data.add(new Loc(ietfLanguageTag)); 
      } 
     } 
    } 

還可以創建一個類來獲得所有的語言

public class Loc { 
    protected Locale locale; 

    public Loc(String ietfLanguageTag) { 
     this.locale = null; 
     String[] l = ietfLanguageTag.split("_"); 
     if (l.length == 2) { 
      this.locale = new Locale(l[0], l[1]); 
     } 
    } 

    public String oneLineLanguageCountry() { 
     return String.format("%s (%s)", new Object[]{toTitleCase(this.locale.getDisplayLanguage(this.locale)), toTitleCase(this.locale.getDisplayCountry(this.locale))}); 
    } 

    public String twoLinesLanguageCountry() { 
     return String.format("%s\n%s", new Object[]{toTitleCase(this.locale.getDisplayLanguage(this.locale)), toTitleCase(this.locale.getDisplayCountry(this.locale))}); 
    } 

    public String getIetfLanguageTag() { 
     return String.format("%s_%s", new Object[]{this.locale.getLanguage(), this.locale.getCountry()}); 
    } 

    public Locale getLocale() { 
     return this.locale; 
    } 

    private static String toTitleCase(String s) { 
     return s.length() == 0 ? s : new StringBuilder(String.valueOf(Character.toUpperCase(s.charAt(0)))).append(s.substring(1)).toString(); 
    } 

    public boolean isLocaleCurrentLocale() { 
     return Locale.getDefault().equals(getLocale()); 
    } 

    public String toString() { 
     return oneLineLanguageCountry(); 
    } 
} 

請投我的答案,如果它也適合你