Android TV端RecyclerView焦點亂跑

NathansLiu發表於2017-12-14

最近在做TV端的專案著實一腳一個坑,焦點問題是解決TV端開發的關鍵

本篇文章解決當用RecyclerView展示資料,瀏覽到最後一個item時焦點亂跑的問題

直接上程式碼了

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_DOWN) {
            //判斷RecyclerView是否得到焦點
            if (mRecyclerView.hasFocus()) {
                if (mList.size() > 0) {
                    //得到item的數量
                    int i = mList.size() - 1;
                    //丟擲控制值是因為 findViewByPosition方法判斷的是還未載入到的item
                    try {
                        if (mManager.findViewByPosition(i).hasFocus()) {
                            return true;
                        }
                    } catch (Exception e) {
                    }
                }
            }
        }
        return super.onKeyDown(keyCode, event);
}複製程式碼

上面程式碼我們監聽了下鍵,判斷展示資料的RecyclerView是否獲得焦點了,接著判斷了資料size是否為空,算出資料數量,下面是個空指標,異常裡面的判斷意思是若:最後一個item獲取到焦點就攔截遙控下鍵,讓焦點一直停留在最後一個item上,就不會出現焦點亂跑了

也可以重寫LinearLayoutManager解決這個問題,

監聽遙控按鍵的方法有好幾種blog.csdn.net/u011414643/…你需要先了解這個

若你有其他問題也可留言詢問,我會幫你解決或協同你解決



相關文章