我正在电视平台上开发一个项目,我在布局中使用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
会返回菜单视图。