设置/禁用专注于GridView中某一个项目 [英] set/disable focus on a certain item in GridView

查看:137
本文介绍了设置/禁用专注于GridView中某一个项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我在一个适配器定义的项目的GridView。这些项目是由TextView的和ImageView的堆肥。我想控制的重点放在GridView控件,它看起来是这样的:

 (1)(2)(3)(4)

当我$键盘页上$ PSS右,焦点移到1-> 2-3> 4。我需要禁用焦点上2,即1-> 3-> 4。
我想:

 ((GridView控件)视图).getChildAt(mPosition).setNextFocusRightId(mGridView.getChildAt(mPosition + 2).getId());
((GridView控件)视图).getChildAt(mPosition + 2).requestFocus();
((GridView控件)视图).setSelection(mPosition + 2);

在dispatchKeyEvent功能时所选择的位置0项目,但没有奏效。同时,我试过 getChildAt(mPosition + 1).setSelected(假)
在GridView onFocusChangeListener,而且它确实没有好。我被这个问题卡住了。请人谁可以给我一张纸条?


解决方案

 如果(event.getKey code()== KeyEvent.KEY code_DPAD_LEFT
                    &功放;&安培; (event.getAction()== KeyEvent.ACTION_DOWN)){
                如果(MTYPE == 0&放大器;&放大器; currentPos ==(disablePos + 1)及;&放大器; disablePos> = 1){
                    ((GridView控件)V).getChildAt(disablePos).setSelected(假);
                    ((GridView控件)V).getChildAt(disablePos - 1).requestFocus();
                    ((GridView控件)V).setSelection(disablePos - 1);
                    返回true;
                }其他{
                    返回false;
                }如果(event.getKey code()== KeyEvent.KEY code_DPAD_LEFT
                    &功放;&安培; (event.getAction()== KeyEvent.ACTION_DOWN)){
                如果(MTYPE == 0&放大器;&放大器; currentPos ==(disablePos + 1)及;&放大器; disablePos> = 1){
                    ((GridView控件)V).getChildAt(disablePos).setSelected(假);
                    ((GridView控件)V).getChildAt(disablePos - 1).requestFocus();
                    ((GridView控件)V).setSelection(disablePos - 1);
                    返回true;
                }其他{
                    返回false;
                }

I have a GridView with items which I defined in an adapter. Those items are composted by TextView and ImageView. I want to control the focus on GridView, It looks like this:

(1) (2) (3) (4)

when I press "right" on keyboard, focus move 1->2-3>4. I need disable the focus on 2, that is 1->3->4. I tried :

((GridView) view).getChildAt(mPosition).setNextFocusRightId(mGridView.getChildAt(mPosition+2).getId());
((GridView) view).getChildAt(mPosition + 2).requestFocus();
((GridView) view).setSelection(mPosition + 2);

on dispatchKeyEvent function when item selected on position 0. But it didn't work. And also I tried getChildAt(mPosition + 1).setSelected(false) in the GridView onFocusChangeListener, and it did no good. I'm stuck by this problem. Please anyone who can give me a note?

解决方案

if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_LEFT
                    && (event.getAction() == KeyEvent.ACTION_DOWN)) {
                if (mType == 0 && currentPos == (disablePos + 1) && disablePos >= 1) {
                    ((GridView) v).getChildAt(disablePos).setSelected(false);
                    ((GridView) v).getChildAt(disablePos - 1).requestFocus();
                    ((GridView) v).setSelection(disablePos - 1);
                    return true;
                } else {
                    return false;
                }if (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_LEFT
                    && (event.getAction() == KeyEvent.ACTION_DOWN)) {
                if (mType == 0 && currentPos == (disablePos + 1) && disablePos >= 1) {
                    ((GridView) v).getChildAt(disablePos).setSelected(false);
                    ((GridView) v).getChildAt(disablePos - 1).requestFocus();
                    ((GridView) v).setSelection(disablePos - 1);
                    return true;
                } else {
                    return false;
                }

这篇关于设置/禁用专注于GridView中某一个项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆