您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何實現Android鍵盤的中英文適配,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
英文環境下,密碼框字體和一般字體不一致問題
1、xml中不能設置inputType 屬性、或者password屬性
2、中文環境中設置inputType可以
3、當要是適配英文,只能在Java代碼設置
android開發EditText輸入時彈出數字輸入鍵盤(適配英文環境)
首先設置只能輸入數字
<EditText android:id="@+id/second_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:digits="1234567890" android:maxLength="6" android:paddingLeft="@dimen/dp_20" android:singleLine="true" android:textSize="@dimen/sp_14"/>
重點是
android:digits="1234567890"
EditText中android:digits屬性的作用
是設置允許輸入哪些字符。如“1234567890.+-*/%\n()”
再在代碼里面設置輸入法類型:
secondPassword.setInputType(EditorInfo.TYPE_CLASS_PHONE);//數字鍵盤 secondPassword.setTransformationMethod(new PasswordTransformationMethod());//密文
則如果該EditText獲得焦點,會彈出數字輸入法的模擬鍵盤
請在xml中設置inputType屬性即可
1、API中有,列舉出來inputType的值都包括哪些。
android:inputType=”none” android:inputType=”text” android:inputType=”textCapCharacters” 字母大寫 android:inputType=”textCapWords” 首字母大寫 android:inputType=”textCapSentences” 僅第一個字母大寫 android:inputType=”textAutoCorrect” 自動完成 android:inputType=”textAutoComplete” 自動完成 android:inputType=”textMultiLine” 多行輸入 android:inputType=”textImeMultiLine” 輸入法多行(如果支持) android:inputType=”textNoSuggestions” 不提示 android:inputType=”textUri” 網址 android:inputType=”textEmailAddress” 電子郵件地址 android:inputType=”textEmailSubject” 郵件主題 android:inputType=”textShortMessage” 短訊 android:inputType=”textLongMessage” 長信息 android:inputType=”textPersonName” 人名 android:inputType=”textPostalAddress” 地址 android:inputType=”textPassword” 密碼 android:inputType=”textVisiblePassword” 可見密碼 android:inputType=”textWebEditText” 作為網頁表單的文本 android:inputType=”textFilter” 文本篩選過濾 android:inputType=”textPhonetic” 拼音輸入 //數值類型 android:inputType=”number” 數字 android:inputType=”numberSigned” 帶符號數字格式 android:inputType=”numberDecimal” 帶小數點的浮點格式 android:inputType=”phone” 撥號鍵盤 android:inputType=”datetime” 時間日期 android:inputType=”date” 日期鍵盤 android:inputType=”time” 時間鍵盤
2、Enter鍵圖標的設置
想象一下,當我們在EditText中完成了輸入,想要以輸入的內容作為關鍵字進行搜索時,卻需要按下“完成”圖標的Enter按鍵,顯然這不符合良好的用戶體驗設計。 那么,怎么樣來改變Enter按鍵的圖標呢?
Android為我們提供了android:imeOptions來實現這一功能。
android:imeOptions的常用參數有以下一些:
normal(常規),
actionUnspecified(未指定),
actionNone(沒有動作),
actionGo(去往),
actionSearch(搜索),
actionSend(發送),
actionNext(下一個),
actionDone(完成),
flagNoExtractUi,flagNoAccessoryAction,flagNoEnterAction等,其對應的Enter鍵
圖標如圖所示:
3、設置軟鍵盤交互樣式
有時鍵盤彈出需要把界面擠壓到上端或直接覆蓋界面。 可在AndroidManifest.xml 對應的 Activity 里添加上這條屬性:
android:windowSoftInputMode=”參數”
參數詳情如下,多個參數之間可用‘|'隔開:
【A】stateUnspecified:軟鍵盤的狀態并沒有指定,系統將選擇一個合適的狀態或依賴于主題的設置
【B】stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity里的狀態,無論是隱藏還是顯示
【C】stateHidden:用戶選擇activity時,軟鍵盤總是被隱藏
【D】stateAlwaysHidden:當該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的
【E】stateVisible:軟鍵盤通常是可見的
【F】stateAlwaysVisible:用戶選擇activity時,軟鍵盤總是顯示的狀態
【G】adjustUnspecified:默認設置,通常由系統自行決定是隱藏還是顯示
【H】adjustResize:該Activity總是調整屏幕的大小以便留出軟鍵盤的空間
【I】adjustPan:當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分
EditText默認不彈出軟件鍵盤:
方法一:
在 AndroidMainfest.xml 中選擇哪個 activity,設置windowSoftInputMode 屬性為 adjustUnspecified|stateHidden
例如:
<activity android:name=".Main" android:label="@string/app_name" android:windowSoftInputMode="adjustUnspecified|stateHidden" android:configChanges="orientation|keyboardHidden"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
方法二:
讓EditText失去焦點,使用EditText的clearFocus方法
例如:
EditText edit=(EditText)findViewById(R.id.edit); edit.clearFocus();
方法三:
強制隱藏Android輸入法窗口
例如:
EditText edit=(EditText)findViewById(R.id.edit); InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(edit.getWindowToken(),0);
4、自動將輸入的小寫字母轉換為大寫
自動轉化為大寫字母。但是轉換出來的只是顯示為大寫字母,存的還是小寫字母。
class InputLowerToUpper extends ReplacementTransformationMethod{ @Override protected char[] getOriginal() { char[] lower = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' }; return lower; } @Override protected char[] getReplacement() { char[] upper = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' }; return upper; } } editText.setTransformationMethod(new InputLowerToUpper());
也可通過設置 android:inputType=”textCapCharacters”可行,但是就不能一塊使用密碼鍵盤了。
//下面這種方法才是真正的將輸入的小寫字母轉換為大寫字母 addressText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub addressText.removeTextChangedListener(this);//解除文字改變事件 addressText.setText(s.toString().toUpperCase());//轉換 addressText.setSelection(s.toString().length());//重新設置光標位置 addressText.addTextChangedListener(this);//重新綁 // licensePlateNumber = addressText.getText().toString().trim(); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } });
關于“如何實現Android鍵盤的中英文適配”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。