Android-GridView Unvollkommenheit, wie zu entfernen extra Leerraum rechts
Ich habe ein GridView-basierte Kalender. Ich habe die folgenden XML-layout-Selektor auf null gesetzt, so android:listSelector="@null"
im Einklang mit den raten habe ich von dieser Seite. Jetzt bin ich immer ein paar Pixel breiter Streifen rechts des GridView-Steuerelements. Warum? Ich habe alles versucht, ich kann aber in Anspruch zu nehmen. Hier ist mein XML-layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<GridView
android:id="@+id/calendar"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:horizontalSpacing="-1px"
android:numColumns="7"
android:stretchMode="columnWidth"
android:gravity="center"
android:verticalSpacing="-1px"
android:listSelector="@null" >
</GridView>
</LinearLayout>
Was ich bekomme ist dieses Bild:
- Vielleicht ist das ein scrollbar-Problem? Versuchen Sie scrollbar-Sichtbarkeit auf false.
- Haben Sie versucht, ändern horizontalen Abstand von -1 zu 0?
- Ich habe versucht, die scroll bar Problem und es hat nicht funktioniert. Sehen
dinesh sharma's
Antwort unten scheint es Sinn zu machen. - Sie können versuchen, ein layout in Ihrem Haupt-layout und stellen Sie Ihre gridView in diesem layout und aply android:gravity="center_horizontal" - Eigenschaft in diesem layout, die helfen können Sie und 1 mehr Sache ändern gridView ist layout_width zu "wrap_content"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Raum ist aufgrund der unvollkommenen Berechnung für jede Zeile des Rasters.
Zum Beispiel Ihr Gerät Breite von 320 px und Sie haben 7 Reihen, versuchen, jede Berechnung, das entspricht 320 px. Wenn die Breite jeder Zelle ist 45.71428571428571 px, nur dann reduziert werden kann.
Andere option
gelten
android:gravity="center"
Eigentum, in Ihr raster, so dass die Räume werden gleichmäßig verteilt von Links nach rechts
android:gravity="center"
Sache zu arbeiten, obwohl. Aber, das sieht eher trivial. Danke!android:gravity="center"
undandroid:layout_gravity="center"
Lösungen, und Sie funktionieren nicht. Ich habe eine Kompromiss-Lösung rellies auf definieren Sie die Spaltenbreite im code, so dass Ihre kombinierte Breite, die größer ist, dass die devince die Bildschirm-Breite. Dies zwingt die Spalten den Bildschirm ausfüllen, aber die Letzte Spalte ist leicht beschnitten - nicht sehr gut, wenn Sie einen Rand haben, weil die Grenze dissappears. Die mit angegeben ist, also: [link]bytecapsule.blogspot.com/2011/08/... (ByteCapsule)in meinem Fall hatte ich den horizontalen Abstand als 1dp
so zu lösen das ich einfach die richtige Polsterung -1dp
obwohl ich erwartet, dass Sie sich einen Platz auf der linken Seite durch , aber es funktioniert
horizontalSpacing="0dp"
- und noch den extra-Raum erschien auf der rechten Seite, aber die Zugabe von nurpaddingRight="-1dp"
es behoben.Versuchen Sie es mit
Auch Sie vielleicht haben, dass der Speicherplatz für die Bildlaufleiste.
Und warum haben Sie Ihre vertikalen und horizontalen Abstand mit negativen Werten?
Ich hatte das gleiche problem aber in meinem Fall hatte ich nicht die Kontrolle über die
GridView
Instanz, so ich nicht Lesen konnte, die Breite der Spalte. Dennoch konnte ich seine Unterklasse container.Das ist nicht sehr orthodox, aber Sie können überschreiben die
onMeasure
- Methode, und fügen Sie ein paar Pixel.Etwas wie dieses:
Diese erhalten die aktuellen ColumnWidth und hinzufügen von 1 pixel zu.
Vergessen Sie nicht, dieses nach der onCreateView,da das grid initialisiert werden muss, bevor das.
Auch,Ihre grid-Ansicht,sollte die Verwendung match_parent (Höhe und Breite).Das Bild/layout in der Spalte sollte auch match_parent.