4

HorizontalScrollView含むものがあり、これには2つのsLinearLayoutが含まれています。FrameLayoutそれぞれFrameLayoutにのレイアウトが含まれていますFragment。今、私はビュー、つまりFrameLayout、現在表示されているか、内でフォーカスされているビューを取得しようとしていHorizontalScrollViewます。ビューに焦点を合わせるとすぐに、内のインデックスを取得できますLinearLayout

次のことを試しましたが、何も機能しません。

  • ホリゾンタルスクロールビュー.findFocus()-nullを返します
  • LinearLayout.findFocus()-nullを返します
  • LinearLayout.getFocusedChild()-nullを返します
  • FrameLayout.hasFocus()-すべてFrameLayoutのsに対してfalseを返します

LinearLayoutまた、各子の現在のX位置に基づいて計算を行うことにより、のどの子にフォーカスがあるかを把握することもできます。getX()ただし、各子を呼び出すと、常に「0.0」が返されます。

ビューに焦点を合わせる方法(または、より良いのは内のインデックス)を取得する方法を誰かが知っていますLinearLayoutか?

4

1 に答える 1

7

この質問への回答を使用して:android-how-to-check-if-a-view-inside-of-scrollview-is-visible私は次の解決策を思いつきました:

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;
    }
}
于 2012-04-16T10:44:23.320 に答える