Android Scrollview in RelativeLayout mit ButtonBar

8

Ich versuche eine Login-Ansicht zu implementieren, wo mehrere EditTexte und ein Logo auf dem Bildschirm mit einer ButtonBar am unteren Rand angezeigt werden, etwa so:

alt text http://russellhaering.com/media/addAccount.png

Das Problem ist, dass auf sehr kleinen Bildschirmen, besonders wenn sie seitwärts gedreht werden, die gesamte Hauptansicht nicht auf den Bildschirm passt.

Ich habe derzeit

%Vor%

Ich habe versucht, das erste LinnearLayout in einer ScrollView zu kapseln, die wie folgt aussieht:

%Vor%

Aber das führt zu zwei Problemen:

  1. Die ScrollView scrollt nicht, selbst auf Bildschirmen, auf denen die Daten nicht alle passen

  2. Die ButtonBar schwebt über der Bildschirmtastatur und verdeckt bei der Tastaturbetätigung noch mehr Bildschirm.

Alles funktionierte gut, als ich die Tasten in der ScrollView hatte, aber jetzt, da ich sie in der ButtonBar habe, habe ich eine Menge Schwierigkeiten, das herauszufinden.

    
russell_h 03.08.2010, 03:19
quelle

2 Antworten

15

Es stellte sich heraus, dass die Lösung zwei Schritte erforderte:

  1. Die Unfähigkeit zum Scrollen war ein Ergebnis der ScrollView hinter der Buttonleiste. Um dies zu beheben, habe ich die ScrollView unterhalb der Buttonleiste definiert und dann android:layout_above="@id/buttonbar_login" verwendet, um zu bewirken, dass die ScrollView sich vollständig über der Buttonleiste befindet.

  2. Offenbar wird beim Öffnen der Bildschirmtastatur bei einer ScrollView die Größe geändert, so dass die Tastenleiste mit der Tastatur aufsteigen kann. Um das zu beheben, habe ich das Manifest geändert und android hinzugefügt: windowSoftInputMode="adjustPan", um die Größe der ScrollView zu verhindern.

russell_h 03.08.2010, 05:36
quelle
0

Wenn Ihr Anwendungsfall das Ausblenden der Schaltflächenleiste im Querformat unterstützt, können Sie Resources.getSystem().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE überprüfen und die Schaltflächenleiste auf View.GONE setzen.

Sie müssen wahrscheinlich auch android:windowSoftInputMode="adjustResize" für <activity> in Ihrer Manifest-Datei festlegen. Android fügt es nur in adjustResize automatisch ein, wenn das Root-Layout ein ScrollView (iirc) ist.

    
Qberticus 03.08.2010 03:57
quelle