溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

EditText焦點自動帶出軟鍵盤問題

發(fā)布時間:2020-04-10 20:04:06 來源:網(wǎng)絡 閱讀:715 作者:沒有水勒魚 欄目:移動開發(fā)

總結(jié)一下網(wǎng)上的辦法  
可是一個都不管用
我想真的是應該我的虛擬機出問題了
神啊
讓我趕緊有錢買安卓手機吧。。
(那種很便宜的真心不想買。。。感覺。。不劃算。。OTZ

========================================================================原因分析:
       Android新啟動Activity,dialog或者其他窗體中中包含EditText, 新啟動的activity的焦點默認在EditText上,這時候android系統(tǒng)會自動彈出軟鍵盤。這會導致擠壓activity本來的界面,影響美觀。
幾種解決方法:
      一、解決效果:activity打開,軟鍵盤不自動打開,焦點不在editText上面。當點擊editText,再打開軟鍵盤
             具體方法:在onCreate()方法中將焦點放在另一個view上.  view使用requestFocus()焦點,但是如果讓button或者textView之類控件直接使用requestFocus()方法,則無法 獲取焦點,焦點會依然在editText上。
                              只能在使用View的requestFocus()方法之前調(diào)用下面2個方法,view才可獲取焦點:
                              view.setFocusable(true);
                              view.setFocusableInTouchMode(true);
                              然后調(diào)用 requestFocus()即可獲取焦點。
     二、解決效果:activity打開,軟鍵盤不自動打開,焦點落在editText上面。當點擊editText,再打開軟鍵盤
            具體方法:在Activity中OnCreate方法里面加下面這句代碼 getWindow().setSoftInputMode(  WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
                             或者在AndroidManifest.xml中該activity處添加android:windowSoftInputMode屬性
                             eg. <activity android:name="SelectPartsActivity"
                                                 android:screenOrientation="landscape"
                                                android:windowSoftInputMode="stateAlwaysHidden" />
                             PS:如果實在不放心,可以兩個都添加
     三、解決效果:android機頂盒開發(fā)時,長按遙控器OK鍵(此處的長按操作一般都為用戶按鍵時間過長導致的誤操作,而不是有意長按)打開Activity,軟鍵盤不自動打開,焦點落在editText上面。
            解決方法(本人未測試,不知是否可用):在OnCreate中設置延時,必須等延時事件完畢才讓EditText能獲得焦點彈出軟鍵盤;或者讓EditText一直獲得焦點,必須延時事件結(jié)束后EditText才能響應軟鍵盤彈出事件。此處用到Timer輔助實現(xiàn)。
                            eg.   @Override
                                    public void onCreate(Bundle savedInstanceState) {
                                        super.onCreate(savedInstanceState);
                                        setContentView(R.layout.main);
                                        Timer timer = new Timer();
                                        timer.schedule(new TimerTask() {
                                            @Override
                                             public void run() {
                                                 //此處EditText獲得焦點或者軟鍵盤彈出操作
                                                 ...................
                                                //  InputMethodManager imm = (InputMethodManager)MainActivity.this.getSystemService(INPUT_METHOD_SERVICE);
                                                // imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
                                             }
                                         }, 1000);  //在一秒后操作
                                     }
    
                                 自動關(guān)閉:
    
                                 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                                 imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);

引用自http://www.eoeandroid.com/blog-687425-4752.html

==================================================================
剛進入activity的時候,如果布局組件有edittext的話,往往edittext會獲取焦點,自動彈出軟鍵盤,影響整個界面的視覺效果。解決方法如下:

可以在edittext的父布局結(jié)構(gòu)中(例如LinearLayout,RelativeLayout等)添加

view sourceprint?
android:focusable="true"
android:focusableInTouchMode="true"


<TextView
android:id="@+id/txtNotuse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true"
android:textIsSelectable="true" />

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI