最近在做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/…你需要先了解這個
若你有其他問題也可留言詢問,我會幫你解決或協同你解決