我在 Google TV 应用中有一个活动,它显示 4 列。布局中的顶级小部件是水平 LinearLayout,其中包含构成列的小部件。4 列小部件(从左到右)是:Vertical LinearLayout(包含按钮)、ListFragment、ListFragment、Vertical LinearLayout(包含 TextViews)。
当填充数据时,2 个 ListFragments 比屏幕的可见高度高得多,并且可以独立滚动以在列表上向上/向下移动。当我在列之间移动焦点时,这一切都很好,除了 ListFragments 上的一些不需要的自动滚动。
例如,如果我将焦点放在第 2 列的顶部(最左侧的 ListFragment)并且我使用 d-pad 将焦点向下移动到可见屏幕的中间,然后我按下 d 上的右键-pad(水平移动到另一个 ListFragment)列表项(在第 2 个 ListFragment 中)与第一个 ListFragment 中的焦点项并排接收焦点(这很好),但同时第 2 个 ListFragment 自动垂直滚动, 将新聚焦的项目推到可见屏幕的顶部(这很糟糕)。相反,我希望它保持原样(在列表中间)。
如果我从第二个 ListFragment 的中间向左移动,回到第一个,也会出现同样的问题。如果我从第一列中的一个按钮向右移动到第一个 ListFragment 的中间,也会发生这种情况。
我知道这种自动滚动行为对于某些应用程序可能是可取的,但在我的应用程序中它并不真正合适,并且会导致用户混淆。