Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 輸入法問題 解決三星s5830i或華為低端機輸入法崩潰問題

Android 輸入法問題 解決三星s5830i或華為低端機輸入法崩潰問題

編輯:關於Android編程

在EditText裡面設置屬性 android:inputType="numberDecimal" 在某些三星手機(s5830i)導致其原生輸入法奔潰的問題. 若是設置屬性為android:inputType="number"則不會崩潰. 原來這些輸入法調用不支持浮點數的,僅能支持整數的.

TextEdit設置監聽

過濾 空串,非浮點數,開頭為0(例如 0123.11)的情況

String regEx = "^[0-9]+\\.{0,1}[0-9]{0,2}$";// 正則表達式 輸入只能為浮點數,後面為2位小數字

priceEt.addTextChangedListener(new TextWatcher() {

			@Override
			public void onTextChanged(CharSequence s, int start, int before,
					int count) {
				if (s != null) {
					
					if (".".equals(txt_amount.getText().toString().trim())
                				|| !(Pattern.matches(regEx, txt_amount.getText()
                					.toString().trim()))) {

            					String str = txt_amount.getText().toString().trim();

            					if (txt_amount.getText().toString().length() >= 1) {
                					txt_amount.setText(str.substring(0, txt_amount.getText()
                        					.toString().length() - 1));
                					txt_amount.setSelection(txt_amount.getText().toString()
                        					.length());
            					}
        				}
				}
			}

			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}

			@Override
			public void afterTextChanged(Editable s) {
			}
		});

xml中注意一個屬性:android:digits="0123456789."
dights限制只能輸入0~9和‘ .' 這些數據類型,其他的格式不支持



完成上面兩個步驟 ,就可以實現自定義浮點數據了,低端機也就不會出現調用api 的numberDecimal類型,輸入法報錯了。




  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved