GridLayout Items gleichmäßig aufteilen

Robertop

Bekanntes Mitglied
Hallo zusammen,

ich versuche mich gerade ein wenig in der Android-Programmierung und habe jetzt aber leider schon beim Layout ein Problem:

Ich würde gerne eine App machen, in der beim Start in einem 2x3 Grid verschiedene Symbole angezeigt werden. Im Prinzip wie in einer Galerie, nur dass ich nicht scrollen möchte. Nachdem ich ein wenig im Internet gesucht und ein paar Tutorials angeguckt habe, habe ich mich entschieden, dass ganze mit einem "GridLayout" zu realisieren.

Leider bekomme ich es nicht hin, dass das Layout die Grafiken gleichgroß in das Gitter sortiert:
Smilies.png

Eigentlich will ich, dass die Emoji auf dem Bildschirm alle gleich groß und kreisrund sind und dass sie insgesamt ein 2x3 Muster ausfüllen könnten, wenn alle 6 Felder belegt sind. Ich habe schon versucht, verschiedene Sachen umzustellen, aber wirklich weiter bin ich nicht gekommen. Meine Vermutung ist, dass es etwas damit zu tun hat, dass die Dateien unterschiedliche Größen haben.
Was muss ich tun, um meinem Layout beizubringen, dass gleichmäßig aufzuteilen? Oder ist ein GridLayout sowieso nicht das richtige für meinen Anwendungsfall?

Code:
<?xml version="1.0" encoding="utf-8"?>
<androidx.gridlayout.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/gridLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:columnCount="2"
    app:rowCount="3"
    tools:context=".MainActivity">

    <!-- Imagesize: 240 pixels -->
    <ImageView
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:src="@drawable/apple_grinningface"
        app:layout_columnWeight="1"
        app:layout_gravity="fill" />

    <!-- Imagesize: 160 pixels -->
    <ImageView
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:src="@drawable/google_grinningface"
        app:layout_columnWeight="1"
        app:layout_gravity="fill" />

    <!-- Imagesize: 108 pixels -->
    <ImageView
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:src="@drawable/samsung_grinningface"
        app:layout_columnWeight="1"
        app:layout_gravity="fill" />

</androidx.gridlayout.widget.GridLayout>
 

Thallius

Top Contributor
Ich würde einfach die Images auf die gleiche Größe skalieren oder wenn sie nicht skaliert werden dürfen eben entsprechend in einem imagebuffer mit passender große reinzentrieren
 

Robertop

Bekanntes Mitglied
Danke. Das war ein guter Tipp:
Ich habe jetzt einfach im Layout bei jeder ImageView eine Layout_Width festgelegt:
Code:
android:layout_width="1dp"
Der Wert selbst scheint keine Rolle zu spielen, solange nur alle Images denselben Wert eingetragen haben. Jetzt werden die gleichmäßig auf dem Bildschirm verteilt.
 

Ähnliche Java Themen

Neue Themen


Oben