设置/禁用专注于GridView中某一个项目 [英] set/disable focus on a certain item in 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屋!