Android-HorizontalScrollView-获取焦点视图(或其索引)

Android-HorizontalScrollView-获取焦点视图(或其索引),android,android-layout,android-scrollview,android-scroll,Android,Android Layout,Android Scrollview,Android Scroll,我有一个水平滚动视图,其中包含一个线性布局,该布局又包含两个框架布局。每个FrameLayout都包含片段的布局。现在我正在尝试获取视图,即FrameLayout,它当前在水平滚动视图中可见或处于焦点。只要视图处于焦点位置,我就可以在线性布局中获取它的索引 我尝试了以下方法,但没有任何效果: HorizontalScrollView.findFocus()-返回null LinearLayout.findFocus()-返回null LinearLayout.getFocusedChild()

我有一个
水平滚动视图
,其中包含一个
线性布局
,该布局又包含两个
框架布局
。每个
FrameLayout
都包含
片段的布局。现在我正在尝试获取视图,即
FrameLayout
,它当前在
水平滚动视图中可见或处于焦点。只要视图处于焦点位置,我就可以在
线性布局中获取它的索引

我尝试了以下方法,但没有任何效果:

  • HorizontalScrollView.findFocus()-返回null
  • LinearLayout.findFocus()-返回null
  • LinearLayout.getFocusedChild()-返回null
  • FrameLayout.hasFocus()-对于所有
    FrameLayout
    s返回false
我还可以根据每个子项的当前X位置进行计算,从而找出
线性布局
中的哪个子项具有焦点。但是,对每个子级调用
getX()
总是返回“0.0”


有人知道如何聚焦视图(或者更好地在
LinearLayout
中索引视图)吗?

使用这个问题的答案:我想出了以下解决方案:

Rect scrollBounds = new Rect();
MyHorizontalScrollView.getDrawingRect(scrollBounds);
Rect childBounds = new Rect();      
for (int i = 0; i < MyLinearLayout.getChildCount(); i++) {
    MyLinearLayout.getChildAt(i).getHitRect(childBounds);
    if(scrollBounds.contains(childBounds)) {
        IndexOfVisibleChild = i;
        return;
    }
}
Rect scrollBounds=new Rect();
MyHorizontalScrollView.getDrawingRect(scrollBounds);
Rect childBounds=new Rect();
对于(int i=0;i
您介意和我们分享一下为什么要做这样的事情吗?我只是好奇。我需要跟踪哪些片段在日志中是可见的。Show可以获得滚动条视图当前可见的子视图的数量吗?这里有任何解决方案/建议吗?很久没有使用Android做过任何事情了,但是如果你在上面的if语句中增加一个计数器,那么应该执行trickGreat解决方案。它帮助我:)