我有一个包含几个布局的片段,我希望在它之间移动焦点。该应用程序使用包含D-Pad 的遥控器(向上,向下,向左,向右和输入)进行操作。
两个“视图组”都包含在FrameLayout中,因为第二个与第一个重叠,它正在拉伸整个页面。视图布局如下所示:
<FrameLayout android:id="contentSurfaceWrapper">
<HorizontalScrollView android:id="contentSurfaceScroll">
<LinearLayout android:id="contentSurface">
<!-- This layout is populated with child layouts (LinearLayout) programmatically -->
<!-- Those layouts are: clickable, focusable & focusableInTouchMode -->
</LinearLayout>
</HorizontalScrollView>
</FrameLayout>
<FrameLayout android:id="navButtonsWrapper">
<ScrollView android:id="navButtonsScroll">
<LinearLayout android:id="navButtons">
<!-- This layout is populated with child layouts (LinearLayout) programmatically -->
</LinearLayout>
</ScrollView>
</FrameLayout>
它的外观图像:
我可以导航到视图:contentSurface及其所有子节点与应用程序顶部操作栏的遥控器之间。但是,现在我想从第一个视图(contentSurface)及其子视图导航到第二个视图(navButtons)及其子视图。但我似乎无法将焦点转移到某些方面。我希望在第一个布局中到达底部时移动焦点,在第二个布局中到达顶部时返回。
我试图让第二个布局中的孩子也可点击,可聚焦和focusableInTouch,但它似乎不起作用。
答案 0 :(得分:0)
所以..我这样解决了:
对于两个视图中的第一个孩子,我以编程方式添加,我设置了ID。 这个ID随后在顶部布局的最后一行中使用android:setNextFocusDownId,在第一行的底部布局中使用android:setNextFocusUpId。
这样我就可以在两个视图中切换焦点。
有关android:setNextFocusUpId等的更多信息
http://developer.android.com/reference/android/view/View.html