2016-08-10 2 views
2

Ich muss nach einer Verzögerung programmgesteuert den FrameLayout unteren Padding oder Rand hinzufügen. Problem ist, dass es sich um einen Container für Fragments mit ScrollView handelt. Wenn ich den unteren Padding/Rand auf ihn setze, wird der innere Inhalt nach oben gescrollt. Der obere Teil von Fragment Inhalt ist nicht mehr sichtbar.Fügen Sie Padding zu FrameLayout programmgesteuert hinzu, ohne das innere Fragment mit ScrollView-Inhalt zu verschieben

Es funktioniert gut, wenn ich unten padding ScrollView Inhalt gesetzt, aber ich möchte, dass vermeiden und es in einem Activity ohne Notwendigkeit zu behandeln jeden einzelnen Fragment zu ändern.

I versucht:

  • gesetzt unterer Rand/padding FrameLayout
  • View von FrameLayout an der Unterseite in LinearLayout setzen,
  • gesetzt android:clipToPadding="false" zu ScrollView.

Das gleiche Verhalten jedes Mal. Irgendwelche Ideen?

+0

Wie wäre es mit der manuellen Einstellung der Höhe Ihrer 'ScrollView' durch Änderung von (ich nehme an)' match_parent' auf einen festen Wert, berechnet in der Laufzeit, aus der Höhe der Eltern ** minus ** die Auffüllung Wert? –

+0

Und was ist das gewünschte Ergebnis überhaupt? Ich meine, der Inhalt von 'ScrollView' wird nicht vollständig auf den Bildschirm passen, sobald der Padding hinzugefügt wurde, oder? Ich nehme an, du bist damit einverstanden. Wenn das der Fall ist, geht es nur darum, dass 'ScrollView' nach unten scrollt und den oberen Teil abschneidet? Wenn ich mich nicht irre, sollte 'scrollView.setDescendantFocusability (ViewGroup.FOCUS_BEFORE_DESCENDANTS) 'diesen Autoscroll nach unten stoppen. Wenn ich dich immer noch falsch verstehe, bitte klar! –

+0

Wie ich aus der 'Activity' geschrieben habe ich nur Zugriff auf den' FrameLayout' die Behälter für 'Fragments' ist, die beispielsweise enthalten kann' ScrollView', 'RecyclerView' usw. Ich will nicht jeden' ​​Fragment' ändern Ich habe bereits und alles, was ich in Zukunft hinzufügen werde. Inhalt sollte die gesamte Ansicht ohne untere Polsterung/Rand ausfüllen. Es funktioniert gut, aber nach dem Festlegen von Rand/Padding auf 'FrameLayout' scrollt innerer' ScrollView' den Inhalt einfach um diesen Padding/Rand nach oben. Ich werde prüfen 'scrollView.setDescendantFocusability (ViewGroup.FOCUS_BEFORE_DESCENDANTS)' – sswierczek

Antwort

1

Wenn Sie immer noch Probleme haben, können Sie verwenden:

android:descendantFocusability="blocksDescendants"

In Ihrem Kind Scroll.

2

ich meine, es selbst heraus. Es scheint, dass dieses Thema tritt auf, wenn setVerticalFadingEdgeEnabled(true) mit setFadingEdgeLength() auf ScrollView verwendet wird.

Dieser Hack löste das Problem:

@Override 
protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
    setVerticalFadingEdgeEnabled(false); 
    super.onSizeChanged(w, h, oldw, oldh); 
    setVerticalFadingEdgeEnabled(true); 
} 
Verwandte Themen