焦點問題總結,焦點訪談總結

來源:互聯網
上載者:User

焦點問題總結,焦點訪談總結
    
一、什麼是焦點button擷取焦點的話就是橙色,edittext擷取焦點是豎線,等等這些是焦點。二、關於焦點的說明觸摸事件可能要觸發多次,但點擊事件可能就一次。觸摸事件在先,點擊事件在後。在觸摸事件中如果return false那麼點擊事件也沒有。


三、焦點順序及切換的問題。預設情況下,預設情況下,按而已自上而下擷取焦點,但是我們也可以自訂來控制擷取焦點的順序強制性的擷取焦點就是三句話,缺一不可:擷取焦點btnSearch.setFocusable(true)btnSearch.setFocusableInTouchMode(true);在Touch模式下擷取焦點需要設定focusableInTouchMode為true。btnSearch.requestFocus();
setFocusable( false);肯定就是沒有擷取焦點的資格。所以不管怎麼弄,都不會有焦點,但是觸摸事件與點擊事件正常使用。只不過焦點不顯示而已。四、關於editext擷取焦點的問題預設情況下,預設情況下,按而已自上而下擷取焦點,但edittext具有較高的擷取焦點的優先權,即使它在下面,它也可能先擷取焦點,那麼如果不讓其擷取焦點,則setfoucable(false),永遠也擷取不到焦點資格,觸摸,點擊都不擷取焦點。那麼只是讓預設不擷取焦點,而點擊或觸摸擷取焦點,怎麼辦?在EditText前面放置一個看不到的LinearLayout,讓它率先擷取焦點,代碼如下:<LinearLayout android:focusable="true" android:focusableInTouchMode="true" 當我們鍵盤有上下左右鍵的時候
android:nextFocusUp- 定義當點up鍵時,哪個控制項將獲得焦點

android:nextFocusDown-定義當點down鍵時,哪個控制項將獲得焦點

android:nextFocusLeft-定義當點left鍵時,哪個控制項將獲得焦點

android:nextFocusRight--定義當點right鍵時,哪個控制項將獲得焦點
觸摸事件發生時,edittext如果沒有焦點會擷取焦點。如果設定了 setfoucable(false),永遠也擷取不到焦點資格多個edittext豎排處理:意在表單中想設定某一個如EditText擷取焦點,光設定這個是不行的,需要將這個EditText前面的focusable都設定為false才行。
editext.clearfocus方法不好使
五、彈出鍵盤的問題       焦點與鍵盤沒有必然的關係,與觸摸事件有關係。      當觸摸事件發生時,如果editext沒有焦點,則會擷取焦點,      當觸摸事件發生時,會彈出鍵盤。     那麼如何預設強制彈出軟鍵盤呢?使用不受限制, 即使editext沒有焦點   androidmainfest中activity屬性裡邊android:windowSoftInputMode="stateVisible"進來就顯示adjustResize該Activity總是調整螢幕的大小以便留出軟鍵盤的空間,這個也很常用。也是彈出軟鍵盤的

各值的含義:

【A】stateUnspecified:軟鍵盤的狀態並沒有指定,系統將選擇一個合適的狀態或依賴於主題的設定

【B】stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity裡的狀態,無論是隱藏還是顯示

【C】stateHidden:使用者選擇activity時,軟鍵盤總是被隱藏

【D】stateAlwaysHidden:當該Activity主視窗擷取焦點時,軟鍵盤也總是被隱藏的

【E】stateVisible:軟鍵盤通常是可見的,一進來就顯示鍵盤

【F】stateAlwaysVisible:使用者選擇activity時,軟鍵盤總是顯示的狀態

【G】adjustUnspecified:預設設定,通常由系統自行決定是隱藏還是顯示

【H】adjustResize:該Activity總是調整螢幕的大小以便留出軟鍵盤的空間

【I】adjustPan:當前視窗的內容將自動移動以便當前焦點從不被鍵盤覆蓋和使用者能總是看到輸入內容的部分

"stateUnspecified":The state of the soft keyboard (whether it is hidden or visible) is not specified. The system will choose an appropriate state or rely on the setting in the theme. This is the default setting for the behavior of the soft keyboard. 軟鍵盤的狀態(隱藏或可見)沒有被指定。系統將選擇一個合適的狀態或依賴於主題的設定。這個是軟體盤行為的預設設定。
"stateUnchanged":The soft keyboard is kept in whatever state it was last in, whether visible or hidden, when the activity comes to the fore. 軟鍵盤被保持上次的狀態。
"stateHidden":The soft keyboard is hidden when the user chooses the activity — that is, when the user affirmatively navigates forward to the activity, rather than backs into it because of leaving another activity. 當使用者選擇該Activity時,軟鍵盤被隱藏。
"stateAlwaysHidden":The soft keyboard is always hidden when the activity's main window has input focus. 軟鍵盤總是被隱藏的。
"stateVisible":The soft keyboard is visible when that's normally appropriate (when the user is navigating forward to the activity's main window). 軟鍵盤是可見的。
"stateAlwaysVisible":The soft keyboard is made visible when the user chooses the activity — that is, when the user affirmatively navigates forward to the activity, rather than backs into it because of leaving another activity. 當使用者選擇這個Activity時,軟鍵盤是可見的。
"adjustUnspecified":It is unspecified whether the activity's main window resizes to make room for the soft keyboard, or whether the contents of the window pan to make the currentfocus visible on-screen. The system will automatically select one of these modes depending on whether the content of the window has any layout views that can scroll their contents. If there is such a view, the window will be resized, on the assumption that scrolling can make all of the window's contents visible within a smaller area. This is the default setting for the behavior of the main window. 它不被指定是否該Activity主視窗調整大小以便留出軟鍵盤的空間,或是否視窗上的內容得到螢幕上當前的焦點是可見的。系統將自動選擇這些模式中一種主要依賴於是否視窗的內容有任何布局視圖能夠滾動他們的內容。如果有這樣的一個視圖,這個視窗將調整大小,這樣的假設可以使滾動視窗的內容在一個較小的地區中可見的。這個是主視窗預設的行為設定。也就是說,系統自動決定是採用平移模式還是壓縮模式,決定因素在於內容是否可以滾動。
"adjustResize":(壓縮模式)The activity's main window is always resized to make room for the soft keyboard on screen. 當軟鍵盤彈出時,要對主視窗調整螢幕的大小以便留出軟鍵盤的空間。
"adjustPan":(平移模式:當輸入框不會被遮擋時,該模式沒有對布局進行調整,然而當輸入框將要被遮擋時,視窗就會進行平移。也就是說,該模式始終是保持輸入框為可見。)The activity's main window is not resized to make room for the soft keyboard. Rather, the contents of the window are automatically panned so that the current focus is never obscured by the keyboard and users can always see what they are typing. This is generally less desirable than resizing, because the user may need to close the soft keyboard to get at and interact with obscured parts of the window. 該Activity主視窗並不調整螢幕的大小以便留出軟鍵盤的空間。相反,當前視窗的內容將自動移動以便當前焦點從不被鍵盤覆蓋和使用者能總是看到輸入內容的部分。這個通常是不期望比調整大小,因為使用者可能關閉軟鍵盤以便獲得與被覆蓋內容的互動操作。。

3.偵聽軟鍵盤的顯示隱藏
       有時候,藉助系統本身的機制來實現主視窗的調整並非我們想要的結果,我們可能希望在軟鍵盤顯示隱藏的時候,手動的對布局進行修改,以便使軟鍵盤彈出時更加美觀。這時就需要對軟鍵盤的顯示隱藏進行偵聽。
       我們可以藉助軟鍵盤顯示和隱藏時,對主視窗進行了重新布局這個特性來進行偵聽。如果我們設定的模式為壓縮模式,那麼我們可以對布局的onSizeChanged函數進行跟蹤,如果為平移模式,那麼該函數可能不會被調用。

如何預設不彈出軟體機碼盤
方法一:
在AndroidMainfest.xml中選擇哪個activity,設定windowSoftInputMode屬性為adjustUnspecified|stateHidden

方法二:
強制隱藏AndroidIME視窗
例如:EditText edit=(EditText)findViewById(R.id.edit);  
           InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
           imm.hideSoftInputFromWindow(edit.getWindowToken(),0);

方法三EditText始終不彈出軟體機碼盤(不太用,你始終不彈出來,你用它幹嘛)
例:EditText edit=(EditText)findViewById(R.id.edit);
       edit.setInputType(InputType.TYPE_NULL);



在應用鍵盤時,需要考慮這麼幾個問題:

【一】當有焦點產生時,軟鍵盤是隱藏還是顯示

【二】是否減少活動主視窗大小以便騰出空間放軟鍵盤


鍵盤中的顯示什麼可以自己定義:android:imeOptions="actionDone"後將設定為Done點擊是將關閉磁碟片
,send,search等。預設的磁碟片顯示的action是“Next”,點擊會到下一個輸入框,如下:


六、焦點變化監聽 onWindowFocusChanged()    /**  * onWindowFocusChanged方法用於監聽一個activity是否載入完畢,Activity生命週期中,     * onStart, onResume, onCreate都不是真正visible的時間點,真正的visible時間點是onWindowFocusChanged()函數被執行七、相關類的說明 例子:setFocusable()   設定view接受焦點的資格    
isFocusable()    view是否具有接受焦點的資格   
setFocusInTouchMode()      對應在觸摸模式下,設定是否有焦點來響應點觸的資格          
isFocusableInTouchMode()  對應在觸摸模式下,view是否具有焦點的資格 
requestFocus()
requestFocus(int direction)當使用者在某個介面聚集焦點,參數為下面的4個View.FOCUS_LEFT     Move focus to the left View.FOCUS_UP       Move focus up 
View.FOCUS_RIGHT    Move focus to the right 
View.FOCUS_DOWN     Move focus down             requestFocusFromTouch()    觸摸模式下 
requestChildFocus (View child, View focused)   ------viewGroup 
1 父元素調用此方法 
2 child  將要擷取焦點的子項目 
3 focused 現在擁有焦點的子項目 
isInTouchMode()    觸摸模式 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.