Center Elemente der HorizontalScrollView, wenn nicht genug, um es scrollen
Ich habe ein Layout mit einem HorizontalScrollView
mit einem LinearLayout
für ein Menü, wo Sie den Inhalt aufgeblasen und mit dem Inhalt der DB. Dies funktioniert gut, jedoch, wenn gibt es nicht genügend Elemente, um die HSV
Blättern Sie dies nicht, füllt die Breite des Bildschirms, der im Idealfall sollte zentriert sein. also
Aktuell:
| Element 1 Element 2 | <- edge of screen
Statt:
| Element 1 Element 2 | <- edge of screen
während noch in der Lage zu:
| Element 1 Element 2 Element 3 Element 4 Elem| <- edge of screen now scrolling
Den layout-XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLinearLayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="25dp" >
</TextView>
<ScrollView
android:id="@+id/scroll1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" >
<LinearLayout
android:id="@+id/contentLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
<HorizontalScrollView
android:id="@+id/horizontalScrollView1"
android:layout_width="fill_parent"
android:layout_height="30dp">
<LinearLayout
android:id="@+id/footerLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
Mit den folgenden XML-Code wird aufgeblasen innerhalb footerLayout:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/footer_content"
android:textSize="18sp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:text="FOOTER"
android:singleLine="true" />
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nur dieses Problem gelöst. Ich lief in ein paar Stunden. Sie müssen, um die Mitte der HorizontalScrollView in seine Eltern und seine Breite/Höhe auf wrap_content. Das layout, die Sie in das der HSV muss seine Breite/Höhe gesetzt, um wrap-Inhalte als auch. Der wichtige Teil hier ist nicht die Schwerkraft/layout_gravity auf das layout oder Sie können Erfahrung (sehr ärgerlich) clipping-Probleme nach dem aufblasen Ihre Ansichten. Beispiel unten ist enthalten in einem RelativeLayout.
Ich hatte das gleiche problem und habe es endlich an die Arbeit. Hier ist ein minimal-Beispiel:
Die Haupttätigkeit layout mit der HorizontalScrollView:
Die Anordnung der Elemente, die werden aufgeblasen und setzen Sie in der scroll-Ansicht:
- Und dies ist ein Beispiel für den code aufblasen und fügen Sie die Elemente:
Er basiert im wesentlichen auf eine Technik für die Dehnung der Inhalt des ScrollViews erklärt dieser Artikel von Romain Guy.
Jedoch in diesem Fall, wo Sie hinzufügen, Inhalte dynamisch, ein weiterer wichtiger Punkt ist die Einstellung der positive Wert für das Gewicht (1f in diesem Beispiel) mit LayoutParams beim hinzufügen der Elemente zum container. Wenn Sie eine statische Gruppe von Elementen, die können Sie direkt in die container und müssen nicht aufblasen, können Sie festlegen, das Gewicht der Elemente " äußeren LinearLayout in der XML-layout-wie so:
Aber wenn man es dynamisch, das wird nicht funktionieren, weil das Gewicht wird auf 0 zurückgesetzt und die Elemente Zusammenbruch. Daher müssen Sie es über die LayoutParams.
fillViewport="true"
war das fehlende Stück, das ich gesucht hatte zu lösen, mein ähnliches problem. Für zukünftige Leser: wenn Sie Auftritt, wirklich komisch auf der linken Seite beschneiden von Ihr zentriertTextView
innerhalb derHorizontalScrollView
, versuchen tweaking mit derfillViewport
Attribut. Es können GEWICHTE eingeschaltet werden.Unten ist der einfachste Weg für mich gearbeitet.
geschafft, Runde center-horizontal beschneiden der linken Seite:
HorizontalScrollView Teil des layout geändert wurde:
Seine nur schade, wenn es Zentren, die Sie Sie sind nicht gleichmäßig verteilt.
Wenn jemand eine Idee hat, lasst es mich bitte wissen.
zuweisen wieght 1 auf die textview im aufgeblasenen Sichtweise und die Breite wrapcontent