这是Horizo​​ntalScrollView的onRequestFocusInDescendants方法中的错误吗?

时间:2014-12-19 08:27:54

标签: android android-fragments focus horizontalscrollview

我正在电视平台上开发一个项目,我在布局中使用HorizontalScrollView。由于该平台的重点非常重要。

我认为我遇到了HorizontalScrollView中的一些错误。首先,我将解释什么样的错误:

----------------------------------------------------------------------------------------
| Menu                      ||  Content                                               |
| This is a ListView        ||  This is a FrameLayout which will be replace           |
|                           ||  with Fragment dynamicly if content is clicked.        |
| This view can be          ||                                                        |
| hided with                ||                                                        |
| smoothScrollTo method     ||                                                        |
|                           ||                                                        |
| Menu1                     ||  Content1                                              |
| Menu2                     ||  Content2                                              |
| Menu3                     ||  Content3                                              |
|                           ||  Content4                                              |
|                           ||  Content5                                              |
|                           ||  Content6                                              |
|                           ||  Content7                                              |
|                           ||  Content8                                              |
---------------------------------------------------------------------------------------

菜单和内容都是可点击的,这是错误:

当隐藏菜单时,我点击某些内容上的OK按钮(此错误只能在某些内容聚焦时重新出现),内容视图将被替换为新的片段,但菜单将自动显示

我找到了菜单自动显示的原因:

onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect)的代码如下:

final View nextFocus = previouslyFocusedRect == null ? FocusFinder.getInstance().findNextFocus(this, null, direction) : FocusFinder.getInstance().findNextFocusFromRect(this, previouslyFocusedRect, direction);

FocusFinder.getInstance().findNextFocus(this, null, direction)返回Menu视图,因此在此方法的最后将requestFocus菜单视图。

我不熟悉FocusFinder(对于新的android编码器,源代码有点困难),我想知道为什么findNextFocus会返回菜单视图。

0 个答案:

没有答案