1. 程式人生 > >android中 如何設定控制元件獲取焦點

android中 如何設定控制元件獲取焦點

舉例用的EditText控制元件
直接上程式碼:

private EditText et_pwd;

et_pwd = (EditText) findViewById(R.id.password_edit);

et_pwd.setFocusable(true);
et_pwd.requestFocus();
et_pwd.setFocusableInTouchMode(true);
et_pwd.requestFocusFromTouch();


說明:

setFocusable

這個是用鍵盤是否能獲得焦點

setFocusableInTouchMode

這個是觸控是否能獲得焦點focusable這種屬性,更多的是為了解決非觸控輸入的,因為你用遙控器或鍵盤點選控制元件,就必然要涉及到焦點的問題,只有可以獲得焦點的控制元件才能響應鍵盤或者遙控器或者軌跡球的確定事件.



focusableInTouchMode.這個屬性在進入觸控輸入模式後,該控制元件是否還有獲得焦點的能力.

可以簡單的理解為,使用者一旦開始通過點選螢幕的方式輸入,手機就進入了"touch mode".focusableInTouchMode這種屬性,多半是設給EditText這種即使在TouchMode下,依然需要獲

取焦點的控制元件.

比如Button之類的控制元件,在touch mode下,就已經沒有獲取焦點的必要了.

Android裡面EditText是用來接受使用者輸入的,那問題是在touch mode下我們沒鍵盤,怎麼辦呢?

android會主動給我們彈出一個軟鍵盤出來(或者是手寫輸入法,這些無所謂...).

那現在想象,我們的介面上有好幾個這種EditText,那彈出的軟鍵盤的輸入,到底要寫在哪個EditText上呢?所以這裡就需要焦點來介入了.

只有獲得了焦點的那個EditText,才能獲取軟鍵盤的輸入.



還有一個clickable屬性

EditText預設clickable為true

TextView預設clickable為false,使用android:clickable="true" 可以設定為true。

也可以不在佈局檔案設定,呼叫TextView.setOnClickListener()自動設定為true。