Android TV listview及焦点处理

Android TV listview及焦点处理,第1张

概述AndroidTVlistview及焦点处理AndroidTV上的listview,因为没有touch事件,只能通过按键处理,因此,用到listview时需要特殊处理:

AndroID TV ListvIEw及焦点处理

AndroID TV上的ListvIEw ,因为没有touch事件,只能通过按键处理,因此,用到ListvIEw时需要特殊处理:

1.复杂的vIEw需要获取焦点,需要设置:

setItemsCanFocus(true)

同时需要设置下能获取焦点vIEw的属性:

androID:focusable="true

这样子级vIEw就可以获取获取焦点。

2.vIEw中需要获取焦点需要高亮框效果,可以在vIEw画外框:

package com.cn21.ecloud.tv.ui.Widget;  import androID.content.Context; import androID.graphics.Canvas; import androID.graphics.Rect; import androID.graphics.drawable.Drawable; import androID.util.AttributeSet; import androID.Widget.relativeLayout;  public class SelectedrelativeLayout extends relativeLayout{   private Drawable mfloatDrawable;   private Rect mTempRect = new Rect();    public SelectedrelativeLayout(Context context) {     this(context,null,0);   }    public SelectedrelativeLayout(Context context,AttributeSet attrs) {     this(context,attrs,AttributeSet attrs,int defStyleAttr) {     super(context,defStyleAttr);     mfloatDrawable = getResources().getDrawable(R.drawable.item_float_rectangle);   }    @OverrIDe   protected voID dispatchDraw(Canvas canvas) {     super.dispatchDraw(canvas);     if (hasFocus()) {       if (mfloatDrawable != null) {         final int w = getMeasureDWIDth();         final int h = getMeasuredHeight();         mfloatDrawable.getpadding(mTempRect);         mfloatDrawable.setBounds(-mTempRect.left,-mTempRect.top,w + mTempRect.right,h + mTempRect.bottom);         mfloatDrawable.draw(canvas);       }     }   } } 

布局中直接使用这个vIEw

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

以上是内存溢出为你收集整理的Android TV listview及焦点处理全部内容,希望文章能够帮你解决Android TV listview及焦点处理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存