4

Ich habe eine HorizontalScrollView enthält eine LinearLayout, die wiederum ein paar FrameLayout s enthält. Jede FrameLayout enthält das Layout einer Fragment. Jetzt versuche ich, die Ansicht, d. H. FrameLayout, die derzeit sichtbar oder im Fokus innerhalb der HorizontalScrollView ist. Sobald ich die Ansicht im Fokus habe, könnte ich ihren Index innerhalb der LinearLayout bekommen.Android - HorizontalScrollView - Blick in den Fokus (oder Index davon)

Ich habe folgendes versucht, aber nichts funktioniert:

  • HorizontalScrollView.findFocus() - Gibt null zurück
  • LinearLayout.findFocus() - Gibt
  • LinearLayout.getFocusedChild null() - Rückkehr null
  • FrameLayout.hasFocus() - liefert false für alle FrameLayout s

ich konnte versuchen Sie auch herauszufinden, welches Kind der LinearLayout Fokus hat, indem Sie Berechnungen basierend auf aktuellen X-Position jedes Kindes. Das Aufrufen von getX() für jedes Kind gibt jedoch immer "0.0" zurück.

Hat jemand eine Idee, wie man die Ansicht im Fokus bekommt (oder noch besser ist es Index innerhalb der LinearLayout)?

+0

Habe Sie etwas dagegen, mit uns zu teilen, warum Sie so etwas tun wollen würde? Ich bin nur Neugierig. –

+0

Ich muss verfolgen, welches der Fragmente für Protokollierungszwecke sichtbar ist. – Schnodahipfe

Antwort

6

Mit der Antwort auf diese Frage: android-how-to-check-if-a-view-inside-of-scrollview-is-visible ich mit folgenden Lösung kam:

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; 
    } 
} 
+0

Wie kann die Anzahl der untergeordneten Ansichten ermittelt werden, die derzeit für die Bildlaufleiste sichtbar sind? – CoDe

+0

jede Lösung/Vorschlag hier? – CoDe

+0

haben seit Jahren nichts mit Android getan, aber wenn Sie einen Zähler in der obigen if-Anweisung erhöhen, sollte der Trick – Schnodahipfe