国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android tv列表焦點記憶實現的方法

2019-10-22 18:13:20
字體:
來源:轉載
供稿:網友

在Android android/234343.html">tv中的開發中,經常要跟焦點打交道,一個常見的需求是要有焦點記憶功能,焦點移動到列表中的某一項中,焦點移出去,在回來時焦點還要定位到原來的項目上,對于這種需求,常見的實現方式是列表用用listview或者recyclerview實現,維護一個變量去存儲上次的焦點位置,并在焦點變動或者按鍵事件中去維護這個變量和使用這個變量來定位.

具體實現

比如說用recyclerview實現列表時,在每個itemview的按鍵事件中,根據按鍵的方向和當前view的位置,判斷是否是向外移走焦點的,如果是,那么就去設置父view也就是recyclerview的焦點模式,并且要保存當前view的位置信息

 

復制代碼 代碼如下:
recyclerview.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);

 

在用戶操作移回焦點時,由于前一步設置了焦點模式為block,因此會父view會首先獲取焦點,增加焦點變動的事件處理:

recyclerview.setOnFocusChangeListener(new OnFocusChangeListener() {      @Override      public void onFocusChange(View v, boolean hasFocus) {        if(hasFocus){          Recyclerview recyclerview = (Recyclerview)v;          recyclerView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);          if(mCurrentFocusPosition>0){            LayoutManager layoutManager = recyclerView.getLayoutManager();            View viewByPosition = layoutManager.findViewByPosition(mCurrentFocusPosition);            if(viewByPosition!=null){              viewByPosition.requestFocus();            }          }        }      }    });

如代碼所示,在焦點變動處理中,設置view的焦點模式,可以讓子view獲取焦點;拿到上一步保存的位置信息來手動設置焦點.

后面介紹另一種更簡便的方法,有更好的封裝性,不需要外層邏輯做維護處理.

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临潭县| 乡宁县| 南雄市| 辽中县| 会同县| 英超| 丹凤县| 海门市| 德阳市| 遵化市| 遂川县| 荆门市| 丰顺县| 怀远县| 浙江省| 富锦市| 涞源县| 浪卡子县| 阿克陶县| 平南县| 当雄县| 泸州市| 桃园县| 贵溪市| 洛宁县| 罗甸县| 灵寿县| 林口县| 秭归县| 措勤县| 栾城县| 海原县| 青龙| 玉田县| 秀山| 枝江市| 邵东县| 柏乡县| 凤冈县| 察哈| 山阳县|