-1

Я разрабатываю приложение, у вас есть 100 кнопок. И я хочу поместить все кнопки в экран. Я использую GridLayout со всеми кнопками внутри проблемы, которые у меня возникают, это то, что кнопки выходят из экрана.Как сделать содержание макета сетки оставаться внутри экрана

This is the problem that I am having

Это код:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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/content_main" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context=".MainActivity" 
    tools:showIn="@layout/app_bar_main" 
    android:layout_column="1"> 

<GridLayout 
    android:id="@+id/GridLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:columnCount="6" 
    android:rowCount="17" 
    android:orientation="vertical"> 

    <ImageButton 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     app:srcCompat="@drawable/numero_1" 
     android:id="@+id/button1"/> 

вопрос, что у меня есть: возможно ли это сделать? И это лучший подход?

Я сделал другой тест, где я изменил размер изображения. Результат не то, что я ожидал заголовок

Результат с различным размером изображения

Image with other size

Как вы можете видеть на втором изображении кнопки в строках находятся внутри экрана, но положение кнопок это не нормально, между последней кнопкой строки и концом экрана есть много места.

Решение, которое я ищу, состоит в том, чтобы иметь макет, который не позволяет кнопкам выйти из экрана, и это автоматически изменяет размер пространства между кнопками и краями, если размер экрана отличается макет автоматически адаптируется к размеру экрана.

ответ

0

Не думаю, что это возможно. Я предлагаю вам использовать 6 вертикальных LinearLayouts в одной горизонтальной плоскости, с весом 1 на внутренних. Я знаю, что это не самый оптимизированный способ, но это проще всего. Другим было бы сохранить GridLayout и рассчитать размер изображений и установить их размер из кода Java.