使用d-pad在同一片段中的LinearLayouts之间移动焦点/导航

时间:2014-06-02 07:49:04

标签: android android-layout

我有一个包含几个布局的片段,我希望在它之间移动焦点。该应用程序使用包含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>

它的外观图像:

enter image description here

我可以导航到视图:contentSurface及其所有子节点与应用程序顶部操作栏的遥控器之间。但是,现在我想从第一个视图(contentSurface)及其子视图导航到第二个视图(navButtons)及其子视图。但我似乎无法将焦点转移到某些方面。我希望在第一个布局中到达底部时移动焦点,在第二个布局中到达顶部时返回。

我试图让第二个布局中的孩子也可点击,可聚焦和focusableInTouch,但它似乎不起作用。

1 个答案:

答案 0 :(得分:0)

所以..我这样解决了:

对于两个视图中的第一个孩子,我以编程方式添加,我设置了ID。 这个ID随后在顶部布局的最后一行中使用android:setNextFocusDownId,在第一行的底部布局中使用android:setNextFocusUpId。

这样我就可以在两个视图中切换焦点。

有关android:setNextFocusUpId等的更多信息

http://developer.android.com/reference/android/view/View.html