Как сделать размеры изображений кнопок динамическими, чтобы они соответствовали контейнеру макета сетки в XML? (Android) - PullRequest
0 голосов
/ 04 июля 2018

У меня есть gridView с номером изображения и текста widgets. XML выглядит следующим образом (остальные виджеты выглядят одинаково):

<GridLayout
    android:id="@+id/grid"
    android:layout_width="0dp"
    android:layout_height="218dp"
    android:alignmentMode="alignBounds"
    android:columnCount="3"
    android:rowCount="4"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/graphicContainer">

    <ImageButton
        android:id="@+id/cookieImageButton"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_column="0"
        android:layout_row="0"
        android:background="#0000"
        android:scaleType="fitCenter"
        app:srcCompat="@drawable/cookie_icon_60at3x"
        tools:layout_editor_absoluteX="33dp"
        tools:layout_editor_absoluteY="300dp"
        />
    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="0"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal"
        android:layout_row="1"
        android:autoSizeMinTextSize="40px"
        android:autoSizeTextType="uniform"
        android:fontFamily="@font/youre_so_cool_regular"
        android:text="Cookies"
        android:textAlignment="center"
        tools:layout_editor_absoluteX="33dp"
        tools:layout_editor_absoluteY="369dp" />

Дать результат, похожий на this

Это нормально, но я хочу, чтобы размер widgets (кнопки изображений и текстовые представления) динамически изменялся, чтобы заполнить весь gridView. Есть ли способ сделать это в XML? Я искал ответ и нашел варианты, подобные этой: /5992274/yava-izmenit-razmer-izobrazheniya-dinamicheski-chtoby-sootvetstvovat-setkam-v-gridlayout

Но это кажется ненужным комплексом и чем-то, что можно и нужно исправить с помощью некоторого XML-кода. Или я не прав?

1 Ответ

0 голосов
/ 04 июля 2018

Попробуйте этот код .. добавить приведенную ниже зависимость в файл Gradle уровня приложения.

  implementation 'com.intuit.sdp:sdp-android:1.0.4'

затем, после изменения этой вещи ..

<GridLayout android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alignmentMode="alignBounds"
android:columnCount="3"
android:rowCount="4"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/graphicContainer"
xmlns:android="http://schemas.android.com/apk/res/android">

<ImageButton
    android:id="@+id/cookieImageButton"
    android:layout_columnWeight="1"
    android:layout_gravity="fill_horizontal"
    android:layout_width="@dimen/_60sdp"
    android:layout_height="@dimen/_60sdp"
    android:layout_column="0"
    android:layout_row="0"
    android:background="#0000"
    android:scaleType="fitCenter"
    app:srcCompat="@drawable/cookie_icon_60at3x"
    tools:layout_editor_absoluteX="33dp"
    tools:layout_editor_absoluteY="300dp"
    />
<TextView
    android:id="@+id/textView5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_columnWeight="1"
    android:layout_gravity="fill_horizontal"
    android:layout_row="1"
    android:autoSizeMinTextSize="40px"
    android:autoSizeTextType="uniform"
    android:fontFamily="@font/youre_so_cool_regular"
    android:text="Cookies"
    android:textAlignment="center"  
      tools:layout_editor_absoluteX="@dimen/_33sdp"
    tools:layout_editor_absoluteY="@dimen/_369sdp" />
...