-
有TabLayout時,在旋轉屏幕後需要設置當前所在的位置,使其顯示正常
-
使用了AppBarLayout 需注意需在xml中添加:
android:focusable="false" android:touchscreenBlocksFocus="false"
否則會導致底部的View的焦點獲取不正常。
-
由於需要適配阿拉伯語,引入了ViewPager2,但由於焦點事件的問題,在多個Fragment頁面中,如item的左右沒有其它佈局,但其它頁面在它左邊或者右邊,焦點會跳轉其它頁面中去(但是顯示的頁面還是在當前頁面),導致用戶以為失去了焦點,無法正常進行操作,需要替換為FrameLayout。
替換後,在旋轉屏幕後需要注意fragmentManager里是否還有fragments,如有需判斷是否可以複用,不能複用則需要remove,否則會出現重複Fragment實例化的問題。 -
當前頁面如有view需要獲取焦點,會對焦點事件由所影響,如文字的跑馬燈,會使焦點事件位置不在起始位置,只能適配是從焦點點擊過來的事件,通過view.isInTouchMode() ,來自助獲取焦點。
if (!view.isInTouchMode()) { needFocusView.requestFocus(); }
-
使用PopupWindow 需注意設置 setFocusable(true); , 否則會導致PopupWindow無法獲取到焦點。
-
如是需要加載更多的地方,需要重寫view滾動監聽回調,使其加載更多正常工作。
-
有些位置需要監聽onkey事件,如是Fragment則需從Activity中把key事件傳遞過去。
-
有些view非常的長,但是沒有點擊事件,頁面顯示不了下一個需要獲取到焦點的view,就會出現失去焦點或滾動不正常的問題,如能設置能獲取焦點則最好設置可以獲取焦點(android:focusable="true")。
-
使用了AppBarLayout 後,有些位置需要滾動後隱藏起來,需要注意適配滾動處。
-
自定義的View需要注意,如不顯示的View需隱藏起來(設置view.visibility = View.GONE),否則會出現不顯示的view獲取到了焦點,導致用戶無法正常使用。
-
UI的間隔最好是上下左右都有,這樣對後續的添加焦點事件的邊框會非常友好。
网友评论