国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android EditText關(guān)于imeOptions的設(shè)置和響應(yīng)

這篇具有很好參考價(jià)值的文章主要介紹了Android EditText關(guān)于imeOptions的設(shè)置和響應(yīng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Android EditText關(guān)于imeOptions的設(shè)置和響應(yīng),Android進(jìn)階,android,android jetpack,android-jetpack

日常開發(fā)中,最繞不開的一個(gè)控件就是EditText,隨之避免不了的則是對(duì)其軟鍵盤事件的監(jiān)聽,隨著需求的不同對(duì)用戶輸入的軟鍵盤要求也不同,有的場(chǎng)景需要用戶輸入完畢后,有一個(gè)確認(rèn)按鈕,有的場(chǎng)景需要的是回車,有的場(chǎng)景需要用戶輸入后進(jìn)入下一項(xiàng)或者搜索,所幸的是,大部分需求場(chǎng)景通過修改原生設(shè)置就可滿足,只要極少情況下才需要去寫自定義鍵盤。而關(guān)于EditText喚起的軟鍵盤中回車的功能可以通過imeOptions的設(shè)定來(lái)進(jìn)行相應(yīng)的設(shè)置。

其使用方式僅通過在xml中聲明即可:

<EditText
            ...
            android:imeOptions="actionSend"/>

常用屬性

如果不特殊聲明,右下角按鍵則為回車鍵。其常用屬性及相應(yīng)功能設(shè)置如下:

屬性 右下角按鍵顯示及常見應(yīng)用場(chǎng)景
actionGo 右下角按鍵顯示“開始”
actionSearch 右下角顯示放大鏡,對(duì)應(yīng)搜索功能場(chǎng)景
actionSend 右下角按鍵內(nèi)容為"發(fā)送",一般用于即時(shí)聊天頁(yè)面
actionNext 右下角按鍵內(nèi)容為“下一步”或者“下一項(xiàng)”,會(huì)跳到下一個(gè)EditText
actionDone 右下角按鍵內(nèi)容為“完成”
actionNone 無(wú)任何提示
flagNoExtractUi 使軟鍵盤不全屏顯示,只占用一部分屏幕,右下角按鍵為默認(rèn)回車鍵在指定imeOptions后,還要添加android:inputType="text"屬性。

也可以通過代碼去設(shè)置對(duì)應(yīng)屬性,如下:

editText.setInputType(EditorInfo.TYPE_CLASS_TEXT);
editText.setImeOptions(EditorInfo.IME_ACTION_...);

其屬性與代碼中設(shè)置的常量關(guān)系為:

屬性 對(duì)應(yīng)常量
actionGo EditorInfo.IME_ACTION_GO
actionSearch EditorInfo.IME_ACTION_SEARCH
actionSend EditorInfo.IME_ACTION_SEND
actionNext EditorInfo.IME_ACTION_NEXT
actionDone EditorInfo.IME_ACTION_DONE
actionNone EditorInfo.IME_ACTION_NONE
actionUnspecified(未指定) EditorInfo.IME_ACTION_UNSPECIFIED

監(jiān)聽

對(duì)應(yīng)的EditText可以設(shè)置相應(yīng)的監(jiān)聽,editText.setOnEditorActionListener,在監(jiān)聽的onEditorAction()中通過返回的actionId參數(shù)來(lái)判斷觸發(fā)的對(duì)應(yīng)事件。例如以下示例:

xml中簡(jiǎn)單設(shè)置一個(gè)EditText:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <EditText
        android:id="@+id/edt_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:imeOptions="actionGo"
        android:inputType="text"/>
</RelativeLayout>

對(duì)應(yīng)在Activity中對(duì)其進(jìn)行事件監(jiān)聽:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    EditText mEdtView = findViewById(R.id.edt_view);
    mEdtView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            switch (actionId){
                case EditorInfo.IME_ACTION_DONE:
                    Toast.makeText(MainActivity.this, "IME_ACTION_DONE", Toast.LENGTH_SHORT).show();
                    break;
                case EditorInfo.IME_ACTION_GO:
                    Toast.makeText(MainActivity.this, "IME_ACTION_GO", Toast.LENGTH_SHORT).show();
                    break;
                case EditorInfo.IME_ACTION_NEXT:
                    Toast.makeText(MainActivity.this, "IME_ACTION_NEXT", Toast.LENGTH_SHORT).show();
                    break;
                case EditorInfo.IME_ACTION_NONE:
                    Toast.makeText(MainActivity.this, "IME_ACTION_NONE", Toast.LENGTH_SHORT).show();
                    break;
                case EditorInfo.IME_ACTION_PREVIOUS:
                    Toast.makeText(MainActivity.this, "IME_ACTION_PREVIOUS", Toast.LENGTH_SHORT).show();
                    break;
                case EditorInfo.IME_ACTION_SEARCH:
                    Toast.makeText(MainActivity.this, "IME_ACTION_SEARCH", Toast.LENGTH_SHORT).show();
                    break;
                case EditorInfo.IME_ACTION_SEND:
                    Toast.makeText(MainActivity.this, "IME_ACTION_SEND", Toast.LENGTH_SHORT).show();
                    break;
                case EditorInfo.IME_ACTION_UNSPECIFIED:
                    Toast.makeText(MainActivity.this, "IME_ACTION_UNSPECIFIED", Toast.LENGTH_SHORT).show();
                    break;
                default:
                    break;
            }
            return true;
        }
    });
}

其對(duì)應(yīng)效果為:

Android EditText關(guān)于imeOptions的設(shè)置和響應(yīng),Android進(jìn)階,android,android jetpack,android-jetpack

對(duì)應(yīng)吐司也驗(yàn)證了我們代碼的運(yùn)行,我們?cè)僭趚ml中刪除對(duì)應(yīng)屬性,用代碼的形式聲明試試。

xml中:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <EditText
        android:id="@+id/edt_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:inputType="text"/>
</RelativeLayout>

可見,其余無(wú)變動(dòng),對(duì)應(yīng)activity的修改則是在設(shè)置監(jiān)聽前設(shè)置對(duì)應(yīng)屬性:

...
mEdtView.setImeOptions(EditorInfo.IME_ACTION_SEND);
...

其效果為:

Android EditText關(guān)于imeOptions的設(shè)置和響應(yīng),Android進(jìn)階,android,android jetpack,android-jetpack

可見,代碼中設(shè)置效果則一樣,也許你會(huì)疑問,為什么點(diǎn)擊右下角按鍵后還不能收起軟鍵盤,系統(tǒng)中是沒有這樣主動(dòng)行為的,需要我們自己來(lái)調(diào)用以下方法即可:

InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(context.getWindow().getDecorView().getWindowToken(), 0);

重復(fù)響應(yīng)問題

這里需要注意的是,onEditorAction中,如果返回的是false,則onEditorAction中的代碼可能會(huì)調(diào)用兩次,原因不難理解,系統(tǒng)會(huì)首先判斷用戶實(shí)現(xiàn)的方法onEditorActionListener.onEditorAction(this, actionCode, null)的返回值,一旦返回true,會(huì)立即return,因此系統(tǒng)的處理被直接跳過。

設(shè)置無(wú)效問題

當(dāng)設(shè)置了android:maxLines=“1” 屬性時(shí),有可能出現(xiàn)設(shè)置無(wú)效問題,這里要改為android:singleLine="true"此屬性即可。當(dāng)然,有可能個(gè)別的機(jī)型還有其他適配問題,比如三星等等,有遇見的朋友可以留言互相交流。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-829877.html

到了這里,關(guān)于Android EditText關(guān)于imeOptions的設(shè)置和響應(yīng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android EditText 獲取/失去焦點(diǎn)

    項(xiàng)目的需求中,又一個(gè)4位數(shù)的驗(yàn)證碼界面,小弟才疏學(xué)淺,只想到了用 線性布局里面放四個(gè)EditText 。 需求需要輸入內(nèi)容后,自動(dòng)跳到下一個(gè)位置聚焦,刪除指定位置后,自動(dòng)跳到上一個(gè)位置聚焦,由于聚焦/非聚焦UI展示得都不同,所以每個(gè)editText都會(huì)頻繁的設(shè)置焦點(diǎn)變化。

    2024年02月03日
    瀏覽(23)
  • Android 之 EditText (輸入框)詳解

    Android 之 EditText (輸入框)詳解

    上一節(jié)中我們學(xué)習(xí)了第一個(gè) UI控件 TextView(文本框) ,文中給出了很多實(shí)際開發(fā)中可能遇到的一些需求 的解決方法,應(yīng)該會(huì)為你的開發(fā)帶來(lái)便利,在本節(jié)中,我們來(lái)學(xué)習(xí)第二個(gè)很常用的控件 EditText(輸入框) ; 和TextView非常類似,最大的區(qū)別是:EditText可以接受用戶輸入!和前

    2024年02月11日
    瀏覽(20)
  • Android 之 監(jiān)聽 EditText 的內(nèi)容變化

    Android 之 監(jiān)聽 EditText 的內(nèi)容變化

    在前面我們已經(jīng)學(xué)過EditText控件了,本節(jié)來(lái)說下如何監(jiān)聽輸入框的內(nèi)容變化! 這個(gè)再實(shí)際開發(fā)中非常實(shí)用,另外,附帶著說下如何實(shí)現(xiàn)EditText的密碼可見與不可見! 由題可知,是基于監(jiān)聽的事件處理機(jī)制,好像前面的點(diǎn)擊事件是OnClickListener,文本內(nèi)容 變化的監(jiān)聽器則是:Te

    2024年02月12日
    瀏覽(21)
  • Android開發(fā) 文本輸入 EditText 監(jiān)聽器

    Android開發(fā) 文本輸入 EditText 監(jiān)聽器

    1.EditText 文本編輯框:用戶輸入文本信息 可以輸入的文本類型如下:? 常用屬性: ?系統(tǒng)默認(rèn)的EditText: 效果圖: 當(dāng)然也可以自定義EditText的背景,比如用selector設(shè)定獲取焦點(diǎn)時(shí)EditText背景的變化。 selector: 其中focus和nofocus都是自定義的shape,分別表示聚焦和沒有聚焦時(shí)的背景

    2024年02月12日
    瀏覽(24)
  • Android點(diǎn)擊EditText禁止彈出軟鍵盤

    今天做了一個(gè)點(diǎn)擊EditText獲取焦點(diǎn),不彈出設(shè)備系統(tǒng)鍵盤,只彈出自定義鍵盤,在網(wǎng)上能查到很多實(shí)現(xiàn)這一功能的方法,試了很多,只有一種對(duì)我來(lái)說是好用的,做個(gè)記錄方便以后使用 方法一:這個(gè)對(duì)我來(lái)說好用的,也是唯一一個(gè)好用的,還會(huì)多分享幾個(gè)網(wǎng)上說的一些好用的

    2024年02月11日
    瀏覽(22)
  • Android EditText 屏蔽雙擊選中、長(zhǎng)按選中

    同時(shí)屏蔽雙擊選中 和 長(zhǎng)按選中: 只屏蔽長(zhǎng)按選中: 雙擊或長(zhǎng)按都是 Touch事件,所以先看EditText的 onTouchEvent 方法,EditText中 沒有 onTouchEvent方法,而 class EditText extends TextView ,所以查看TextView 的 onTouchEvent 方法。 updateSelection() -- updateSelectionInternal() -- Selection.setSelection((Spannab

    2024年02月13日
    瀏覽(24)
  • Android EditText的setOnEditorActionListener方法——監(jiān)聽軟鍵盤按鍵

    1、控件EditText的setOnEditorActionListener方法的使用 setOnEditorActionListener這個(gè)方法,并不是在我們點(diǎn)擊EditText的時(shí)候觸發(fā),也不是在我們對(duì)EditText進(jìn)行編輯時(shí)觸發(fā),而是在我們編輯完之后點(diǎn)擊軟鍵盤上的各種鍵才會(huì)觸發(fā)。 通過 布局文件 中的imeOptions可以控制軟件盤右下角的按鈕顯示

    2024年02月10日
    瀏覽(18)
  • Android 基礎(chǔ)知識(shí)4-3.2 EditText(輸入框)詳解

    一、EditText(輸入框)介紹 ????????EditText在開發(fā)中也是經(jīng)常使用的控件,比如,要實(shí)現(xiàn)一個(gè)登錄頁(yè)面,需要用戶輸入賬號(hào)、密碼等信息,然后我們或得用戶輸入的內(nèi)容,把它交給服務(wù)器來(lái)判斷。因此,這一節(jié)我們需要學(xué)習(xí)如何在布局文件中實(shí)現(xiàn)編輯框,然后獲得編輯框的

    2023年04月24日
    瀏覽(22)
  • 關(guān)于Android Studio Http Proxy設(shè)置

    關(guān)于Android Studio Http Proxy設(shè)置

    對(duì)敵人最大的蔑視就是沉默。--鹿丸 我們使用Android Studio? 開始構(gòu)建的時(shí)候會(huì)有卡頓的情況,甚至死機(jī),也就是所謂的【android studio】構(gòu)建卡住問題,如果依賴庫(kù)類都是國(guó)內(nèi)的,檢查是否開啟了代理 ? ?這個(gè)地方選擇下面的自動(dòng)代理 國(guó)內(nèi)有很多代理可以設(shè)置,下面這個(gè)親測(cè)有

    2024年02月12日
    瀏覽(28)
  • android 點(diǎn)擊輸入框editText后點(diǎn)擊textview會(huì)彈出軟鍵盤問題解決

    在 Android 中,當(dāng)一個(gè) EditText 或其它可以輸入文本的控件獲取焦點(diǎn)時(shí),系統(tǒng)會(huì)自動(dòng)彈出軟鍵盤以便用戶輸入。當(dāng)軟鍵盤彈出后,點(diǎn)擊其它控件,比如 TextView,也會(huì)觸發(fā) EditText 失去焦點(diǎn)的事件,從而導(dǎo)致軟鍵盤關(guān)閉。這是 Android 系統(tǒng)默認(rèn)的行為。 但是,在某些情況下,用戶希望

    2024年02月15日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包