2014-04-29 68 views
3

我正在爲多種語言的Android應用程序。我想根據鍵盤語言將EditText視圖的inputType設置爲不同。在XML文件中我已經試過:是否有可能使用android:inputType與字符串資源

android:inputType="@string/xyz" 

,並在字符串資源文件中的字符串XYZ將

<string name="xyz">number</string> 

我希望,這是對容易改變輸入型基地一個聰明的主意語言。例如,如果語言是英語,我會將xyz設置爲字母,但在日語中,我會將xyz設置爲數字。我試圖避免這樣做,因爲只要我開始在代碼中輸入過濾器,我的許多XML設置都會被忽略,即使它們沒有被新代碼直接覆蓋。

雖然我嘗試將此字符串資源調用到inputType,但出現錯誤。任何援助將不勝感激。

回答

0

不,你不能這樣做。 android:inputType屬性被定義爲使用也由Android定義的標誌。您無法爲此屬性提供任意字符串值,您只能使用這些預定義的標誌。

3

是的,你可以通過編程實現這一點,因爲inputType可以取值爲integer。這實際上很簡單。

TYPE_CLASS_TEXT具有恆定值:

TYPE_CLASS_NUMBER具有恆定值:

這是你的價值的strings.xml(這你要本地化): 例如:

input_type value in strings for English(text):

<string name="input_type">1</string> 
0在串日本

INPUT_TYPE金額(數量):

<string name="input_type">2</string> 

在你Activity,聲明你EditText,並設置從strings.xml中的inputType所以它會根據本地化設置:

editText = (EditText)findViewById(R.id.editText1); 
editText.setInputType(Integer.parseInt(getResources(). 
             getString(R.string.input_type))); 
+0

謝謝。這很有幫助,但是這仍然允許我從xml中爲edittext指定可接受的字符嗎?即,android:數字。或者將這個代碼否定在xml中?我想接受,例如,只有abcde。這工作,直到我在代碼中設置輸入過濾器。我現在試試你的代碼來看看。我想弄清楚如何限制在代碼中的特定字符,如果我不能在XML中。但是。 Inputfilter仍然讓我感到困惑。 –

+0

這隻適用於單個屬性;對於更復雜的,比如'textNoSuggestions | textVisiblePassword | number',這個解決方案將無法正常工作。 – Paul

相關問題