Intereting Posts
Android TableRow RelativeLayout Issue Камера Cordova PictureSourceType PHOTOLIBRARY v SAVEDPHOTOALBUM Android> Неизвестные ошибки хоста при установке плагина ADT в eclispe Растровое изображение для NinePatch для нового масштабированного растрового изображения Как локализовать приложение Android на индонезийском языке Royalty Free Background Images для Android-приложений Android IME, установите позицию курсора в EditText Недостаточно памяти при распределении по 9830416 байт с растровым изображением Нет статического поля list_container типа I в классе Landroid / support / v7 / preference / R $ id Позиция PagerTabStrip в ViewPager Как достичь более плавного неопределенного уровня прогресса, используемого в приложении Gmail для Android Удалите действия 2 и 3 из заднего стека при запуске 4 Как правильно использовать Google Plus для входа в систему с несколькими действиями? Запустите команду оболочки через QProcess на платформе Android Получение имени пакета приложения foreground в Marshmallow задерживается на 3 секунды

Как обернуть кнопки изображения в горизонтальной линейной компоновке?

Есть ли способ обернуть кнопки изображения в горизонтальной линейной компоновке? Или есть ли другой способ сделать следующее?

У меня шесть кнопок изображения. Предположим, что эти кнопки появляются в устройстве с таким низким разрешением, как это:

Image button 1 | Image button 2 | Image button 3 | (1st row) Image button 4 | Image button 5 | Image button 6 | (2nd row) 

Я хочу, чтобы эти кнопки отображались на планшете или на любом устройстве с высоким разрешением:

 Image button 1 | Image button 2 | Image button 3 | Image button 4 | (1st row) Image button 5 | Image button 6 | (2nd row) 

Или вот так:

 Image button 1 | Image button 2 | Image button 3 | Image button 4 | Image button 5 | Image button 6 | 

В соответствии с экранами устройств. Пожалуйста помоги.

Вот мой основной файл xml:

 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@layout/back2"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@layout/back2"> <TextView android:layout_width="fill_parent" android:layout_height="50dp" android:background="@layout/button5" android:gravity="center" android:orientation="vertical" android:text="@string/hello" android:textColor="#D5D5D5" android:textSize="20sp" /> <com.google.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" ads:adUnitId="a150c75f96c352c" ads:adSize="BANNER" ads:loadAdOnCreate="true"/> <org.core.mywindows8.FlowLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:f="http://schemas.android.com/apk/res/org.core.mywindows8" f:horizontalSpacing="6dip" f:verticalSpacing="12dip" f:fitContent="true" android:layout_width="fill_parent" android:layout_height="wrap_content" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/morange1" android:drawableTop="@drawable/tutorials" android:textColor="#ffffff" android:id="@+id/button1" android:paddingTop="16sp" android:drawablePadding="10sp" android:text="@string/tutorials" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/mviolet" android:drawableTop="@drawable/themes" android:textColor="#ffffff" android:id="@+id/button2" android:paddingTop="16sp" android:drawablePadding="10sp" android:text="@string/themes" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/mblu2" android:drawableTop="@drawable/gadgets" android:textColor="#ffffff" android:id="@+id/button3" android:paddingTop="16sp" android:drawablePadding="10sp" android:text="@string/gadgets"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/mgree" android:drawableTop="@drawable/network" android:textColor="#ffffff" android:id="@+id/button4" android:paddingTop="16sp" android:drawablePadding="10sp" android:text="@string/networking"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/mblu3" android:drawableTop="@drawable/search" android:textColor="#ffffff" android:id="@+id/button5" android:paddingTop="16sp" android:drawablePadding="10sp" android:text="@string/win8index"/> </org.core.mywindows8.FlowLayout> </LinearLayout> </ScrollView> 

    Для этого вы можете использовать FlowLayout.

    Проверьте это

    РЕДАКТИРОВАНИЕ

    Добавьте требуемый класс, стили и атрибуты в свой проект из ссылки, которую я вам дал. И используйте этот макет, добавив его в свой формат XML.


    Упоминается в проекте Git .. Скопируйте все файлы из Git Project в свои проекты

    Пользователь FlowLayout вместо LinearLayout в XML

     <com.yourpackage.FlowLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > </com.yourpackage.FlowLayout> 

    А затем добавьте представление вашего ребенка в этот FlowLayout, может быть только в формате XML или во время выполнения.

    Другие поддерживаемые параметры:

     xmlns:f="http://schemas.android.com/apk/res/your.namespace" f:horizontalSpacing="6dip" f:verticalSpacing="12dip" f:orientation="vertical" f:layout_horizontalSpacing="32dip" f:layout_verticalSpacing="32dip" 

    Я добавил поддержку, чтобы соответствовать контенту в строке. Получите мой источник github

    Сделать эту работу. Вам нужно указать еще один атрибут как fitContent для true для вашего макета.

    е: fitContent = "истина"

    Ответьте на ваши комментарии

    F: verticalSpacing = "12dip" – используется для указания вертикального интервала для всего FlowLayout. Т.е. каждый дочерний вид / кнопка будет иметь вертикальное расстояние.

    пример

      <org.apmem.tools.layouts.FlowLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" f:verticalSpacing="12dip" > </org.apmem.tools.layouts.FlowLayout> 

    В то время как f: layout_verticalSpacing = "32dip" указывается дочерней кнопке, поскольку мы указываем вес

    пример

     <Button xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" f:layout_verticalSpacing="32dip" > </Button> 

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

     /res/layout/ /res/layout-sw600dp/ /res/layout-sw720dp/ 

    Если у вашего проекта нет этих папок, вы можете пойти и сделать их сами. Это сообщает системе во время выполнения, что на основе наименьшей доступной ширины устройства в не зависящих от плотности пикселях будет использоваться один из этих трех макетов. sw600dp рекомендуется для указания «больших экранов», таких как 7-дюймовые планшеты; sw720dp рекомендуется для указания «xlarge screen», например, 10-дюймовых планшетов. Эти числа могут быть произвольными.

    Вы также можете сделать так, как Вивек Ханделвал предложил использовать реализацию FlowLayout, но это может работать или не работать точно так, как вы этого хотите.

    Я разместил детали для простого и относительно краткого решения здесь:

    https://stackoverflow.com/a/23228213/2162226


    Резюме :