日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android textedit 背景,Android EditText 的使用及值得注意的地方

發布時間:2025/3/15 Android 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android textedit 背景,Android EditText 的使用及值得注意的地方 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android上有很多輸入法應用,每種輸入法都有各自的特點,輸入法多數時候是和EditText配合使用,結合我自己的親身實踐分享一下使用EditText過程中遇到的一些問題及解決方法。

設置默認輸入法

有時候為了提高用戶體驗,在彈出輸入法時需要設置默認的輸入狀態,比如單詞應用彈出輸入法時,輸入法最好是在英文輸入狀態下。如果是字典應用,彈出輸入法時最好是在中文輸入狀態下,Android并沒有提供設置默認的輸入狀態的接口,但我們可以通過如下方法一樣能夠達到想要的效果:

默認中文:

mEditText.setInputType(EditorInfo.TYPE_CLASS_TEXT);

默認英文:

mEditText.setInputType(EditorInfo.TYPE_TEXT_VARIATION_URI);

打開和關閉輸入法

手動控制輸入法的開關狀態也能提升用戶體驗,比如:

有的搜索框會有一個清除按鈕,點擊清除按鈕時就應該彈出輸入法,因為用戶清除搜索內容的目的多數時候是需要輸入新的內容;

執行搜索時應該隱藏輸入法,因為顯示輸入法時會遮擋搜索結果,用戶體驗不太好;

鬧鐘來時或者有其它window彈出時應該隱藏輸入法,因為輸入法也是window,如果不隱藏可能導致輸入法遮擋住了其它window等用戶體驗不太友好的問題。

打開輸入法:

privatevoidopen(Contextcontext,VieweditText){

InputMethodManagerinputMethodManager=(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);

inputMethodManager.showSoftInput(editText,0);

}

關閉輸入法:

privatevoidclose(Contextcontext,VieweditText){

InputMethodManagerinputMethodManager=(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);

inputMethodManager.hideSoftInputFromWindow(editText.getWindowToken(),0);

}

監聽EditText的輸入狀態

類似新浪微博,在輸入內容時會提示還可以輸入多少字;

有的搜索引擎,輸入內容時實時顯示搜索結果;

有的輸入框有輸入長度限制,輸入內容超過長度限制時彈出提示信息。

上面這些都可以通過監聽EditText的輸入狀態來實現,具體實現方式如下:

mInputEditTxt.addTextChangedListener(newTextWatcher(){

@Override

publicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){

}

@Override

publicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){

System.out.println("監聽EditText輸入內容的變化,在這里可以監聽輸入內容的長度。");

}

@Override

publicvoidafterTextChanged(Editables){

System.out.println("這里可以實現所輸即所得,用戶輸入的同時可以立即在這里根據輸入內容執行操作,顯示搜索結果!");

}

});

監聽輸入法中的回車按鈕

比如搜狗輸入法的右下角有一個回車按鈕,我們希望用戶點擊它時也執行確認功能,可以通過監聽EditText的按鍵點擊事件來實現:

/**

* 監聽輸入法按鍵

*

* */

mInputEditTxt.setOnKeyListener(newOnKeyListener(){

@Override

publicbooleanonKey(Viewv,intkeyCode,KeyEventevent){

if(keyCode==KeyEvent.KEYCODE_ENTER&&event.getAction()==KeyEvent.ACTION_UP){

System.out.println("手指彈起時執行確認功能");

returntrue;

}

returnfalse;

}

});

改變輸入法中回車按鈕的顯示內容

如果回車按鈕是執行搜索功能,則回車按鈕上顯示”搜索”,如果是執行發送功能,則顯示”發送”,如果是下一步,則顯示”下一步”。

實現這個功能需要調用EditText的setImeOptions方法:

/**

*

* IME_ACTION_SEARCH 搜索

* IME_ACTION_SEND 發送

* IME_ACTION_NEXT 下一步

* IME_ACTION_DONE 完成

*/

mInputEditTxt.setImeOptions(EditorInfo.IME_ACTION_SEARCH);

限制輸入內容

有時候我們根本就不想用戶輸入一些雜七雜八的內容,因為這需要程序針對輸入的內容做各種處理,如果處理不當還會有好多不可預見的問題,索性在輸入內容時就禁止用戶輸入一些非法字符,這可以通過下面的方式實現,新建一個類InputTxtFilter:

publicclassInputTxtFilter{

publicstaticfinalintINPUT_TYPE_EN=0x01;

publicstaticfinalintINPUT_TYPE_CH=0x02;

privatestaticfinalString[]SPELL=newString[]{

"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",

"ā","á","ǎ","à","ō","ó","ǒ","ò","ē","é","ě","è","ī","í","ǐ","ì","ū","ú","ǔ","ù","ǖ","ǘ","ǚ","ǜ","ü"

};

privatestaticchar[]chineseParam=newchar[]{'」',',','。','?','…',':','~','【','#','、','%','*','&','$','(','‘','’','“','”','『','〔','{','【'

,'¥','£','‖','〖','《','「','》','〗','】','}','〕','』','”',')','!',';','—'};

privateInputTxtFilter(){

}

publicstaticvoidinputFilter(finalContextcontext,finalEditTexteditText,finalinttype,finalintinputLimit){

InputFilter[]filters=newInputFilter[1];

filters[0]=newInputFilter.LengthFilter(inputLimit){

publicCharSequence filter(CharSequencesource,intstart,intend,Spanneddest,intdstart,intdend){

booleanisRightCharater=false;

if(type==INPUT_TYPE_EN){

isRightCharater=isLetter(source.toString());

}elseif(type==INPUT_TYPE_CH){

isRightCharater=isChineseWord(source.toString());

}

if(!isRightCharater||dest.toString().length()>=inputLimit){

return"";

}

returnsource;

}

};

editText.setFilters(filters);

}

/**

* 檢測String是否全是中文

*

*/

publicstaticbooleanisChineseWord(Stringname){

booleanres=true;

char[]cTemp=name.toCharArray();

for(inti=0;i

if(!isChinese(cTemp[i])){

res=false;

break;

}

}

returnres;

}

/**

* 是否為英文字母

*

* */

publicstaticbooleanisLetter(StringinputStr){

char[]inputArray=inputStr.toCharArray();

ListspellList=Arrays.asList(SPELL);

for(charinput:inputArray){

if(!spellList.contains(input+"")){

returnfalse;

}

}

returntrue;

}

/**

* 判定輸入漢字

* @param c

*/

publicstaticbooleanisChinese(charc){

for(charparam:chineseParam){

if(param==c){

returnfalse;

}

}

Character.UnicodeBlockub=Character.UnicodeBlock.of(c);

if(ub==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS

||ub==Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS

||ub==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A

||ub==Character.UnicodeBlock.GENERAL_PUNCTUATION

||ub==Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION

||ub==Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){

returntrue;

}

returnfalse;

}

}

在初始化EditText時,調用InputTxtFilter的inputFilter方法,傳入輸入長度限制、輸入內容的類型限制等即可,eg:

InputTxtFilter.inputFilter(this, mInputEditTxt, InputTxtFilter.INPUT_TYPE_EN, 5);

屏蔽EditText的復制、粘貼功能

在低版本的Android SDK中,如果對EditText的輸入長度有限制時,長按EditText并將選中的內容拖動到EditText輸入框中,如果這時候的長度超過了EditText的輸入長度限制,程序會直接崩潰掉,在高版本的Android SDK中這個問題已經改了,如果出現上面的情況會直接清空輸入框中的內容,為了避免這種討厭的問題,我們可以屏蔽EditText的復制和粘貼功能,只需要屏蔽EditText的長按響應即可:

/**

* 屏蔽復制、粘貼功能

*

* */

mInputEditTxt.setCustomSelectionActionModeCallback(newActionMode.Callback(){

publicbooleanonCreateActionMode(ActionModeactionMode,Menumenu){

returnfalse;

}

publicbooleanonPrepareActionMode(ActionModeactionMode,Menumenu){

returnfalse;

}

publicbooleanonActionItemClicked(ActionModeactionMode,MenuItemmenuItem){

returnfalse;

}

@Override

publicvoidonDestroyActionMode(ActionModemode){

}

});

mInputEditTxt.setLongClickable(false);

總結

以上是生活随笔為你收集整理的Android textedit 背景,Android EditText 的使用及值得注意的地方的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中国黄色a级 | 免费av片| 国产最爽的乱淫视频国语对白 | 中文字幕第22页 | 高清精品xnxxcom | 国产乱妇无码大片在线观看 | 日韩在线高清视频 | 自拍99| 老司机在线免费视频 | 免费日本黄色 | 新婚若妻侵犯中文字幕 | 精品人妻伦一二三区免费 | 一区二区三区不卡在线观看 | 亚洲国产果冻传媒av在线观看 | 黄色二级毛片 | 久草视频免费在线播放 | 在线免费黄色网址 | 国产网红在线观看 | 亚洲视频精品一区 | 狠狠躁狠狠躁视频专区 | 欧美精品色视频 | 欧美精品国产一区二区 | 日本理论视频 | 欧美精品久久久久久久自慰 | 精品国产乱码久久久久久久软件 | 亚洲成a| 国产一级片一区 | 亚洲高清视频在线 | 欧美黄色一区 | 在线观看成人av | 韩国激情呻吟揉捏胸视频 | 久久一级片| 久久精品国产亚洲av无码娇色 | 用力使劲高潮了888av | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 免费黄色一级大片 | 99ri在线观看 | 日韩精品一区二区三区视频 | 日韩一区二区三区视频在线观看 | 亚洲成人日韩在线 | 韩国av三级 | 丰满少妇久久久久久久 | 午夜免费网 | 狠狠人妻久久久久久综合 | 亚洲欧美日韩另类 | 激情国产视频 | 久久久久久久中文字幕 | 天堂网2014 | 国产成人免费在线观看 | 高跟av| 1024手机在线看片 | 亚洲激情免费视频 | 九七在线视频 | 日本不卡一二三 | 爆操网站| 国产传媒欧美日韩 | 日本一区二区三区久久 | 黄频在线观看 | 一区二区三区欧美在线 | 视频三区在线 | 日本视频不卡 | 黄视频网站在线看 | 日韩久久精品电影 | 黄色片子免费 | 国产人成在线观看 | 一本到高清 | 日本不卡一区二区在线观看 | 涩涩的视频在线观看 | 嫩草亚洲| 亚洲第一福利网站 | 不卡国产视频 | 97在线视频免费观看 | 日韩精品一区二区三区无码专区 | 韩国成人理伦片免费播放 | 中文在线一区二区三区 | 69精品视频 | 国产黄视频网站 | 91蝌蚪在线观看 | 人人干美女 | 女人叫床高潮娇喘声录音mp3 | 香蕉视频黄色在线观看 | 久久av无码精品人妻出轨 | 视频在线不卡 | 夜夜爽夜夜操 | aaa大片十八岁禁止 中文字幕亚洲在线观看 | 亚洲一二三区视频 | 亚洲国产精品久久久久久6q | 亚洲国产一级 | 猫咪av网 | 情欲超 | 欧美久久久久久久 | 动漫av一区二区三区 | gv天堂gv无码男同在线观看 | 2017天天干 | 日韩欧美一级大片 | 蜜桃传媒一区二区亚洲av | 老女人性生活视频 | 日本高清不卡视频 | 毛片88|