2014-09-12 52 views
1

GONE如果設備設置爲英語英語,我不想顯示佈局。什麼是最好的方式來做到這一點?每次獲取設備語言?Android查看語言

+9

你有什麼反對英國?!我們無法看到您喜歡的佈局?!但是,是的,您可以關閉設備語言。 – 2014-09-12 14:56:56

+2

你能解釋一下爲什麼你想這樣做嗎?我懷疑有一個比你想的更簡單的解決方案。 – 2014-09-12 14:57:03

+3

您可以將您的通用佈局放置在'佈局'中,而佈局中不包含'layout-en-rGB'中的特定部分。 'layout-en-rGB'中的佈局僅在英文設備爲英國時選擇 – 2014-09-12 14:58:38

回答

0

再檢查一下設備的使用此代碼語言每次:

Locale.getDefault().getDisplayLanguage(); 

那麼,如果沒有,更改視圖的可見性是這樣的:

view.setVisibility(View.GONE); 
+1

此代碼不完整:您獲取語言,不要將其存儲在變量中和/或將其與任何內容進行比較。 – 2014-09-12 14:58:10

+0

@Burak你是對的,我不需要將它存儲在一個變量不顯示視圖。每次我檢查。 – user3608814 2014-09-12 15:08:45

+0

@ user3608814我認爲這正是你想要避免的。好吧... – 2014-09-12 15:20:53

1

走這條路,GB代表英國(UK)

String locale = context.getResources().getConfiguration().locale.getCountry(); 

if(locale.equals("GB")) { 
//view.setVisibility(View.GONE); 
//British people are cooool ;) 
}else { 
//do whatever you want to do 
} 
1

setVisibility工作的解決方案,但OP想知道什麼是best這樣做的目的是爲了避免每次都得到運行時語言。

因此:

創建所需的語言獨立佈局(XML文件)。

例如,創建文件夾layout-en-rGB並在此文件夾中複製要修改的XML文件,然後進行所需的修改。

在運行時,每次語言爲英語 - 英語時,此佈局將自動加載。

0

通常最好的方法是爲視圖指定樣式,然後創建該樣式的默認實現並覆蓋en-rGB語言環境的樣式。如果你的佈局不是非常簡單,那麼這是最好的方法,因爲你不想覆蓋整個佈局文件來覆蓋一個屬性。

1)將樣式指定給要隱藏在佈局文件中的視圖。在這裏我用一個TextView:

<TextView 
     android:text="@string/hello_world" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     style="@style/TastyFoodEditText" /> 

2)定義在res /價值/ styles.xml風格

<resources> 
    <style name="TastyFoodEditText" parent="android:style/Widget.EditText"> 
    </style> 
</resources> 

3)通過創建文件資源覆蓋了英國的語言環境的風格/ values-en-rGB/styles.xml with this content

<resources> 
    <style name="TastyFoodEditText" parent="android:style/Widget.EditText"> 
     <item name="android:visibility">gone</item> 
    </style> 
</resources>