2013-07-27 3 views
0

У меня есть этот кодандроид коробки макет переполнить

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/shape" 
android:gravity="top" > 

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical" > 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" > 

     <ImageButton 
      android:id="@+id/imageButton1" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:background="@null" 
      android:onClick="btnCat1" 
      android:src="@drawable/ic_launcher" > 
     </ImageButton> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/imageButton1" 
      android:layout_centerInParent="true" 
      android:clickable="false" 
      android:text="@string/hello_world" /> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" > 

     <ImageButton 
      android:id="@+id/imageButton1" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:background="@null" 
      android:onClick="btnCat1" 
      android:src="@drawable/ic_launcher" > 
     </ImageButton> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/imageButton1" 
      android:layout_centerInParent="true" 
      android:clickable="false" 
      android:text="@string/hello_world" /> 
    </RelativeLayout> 
    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" > 

     <ImageButton 
      android:id="@+id/imageButton1" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:background="@null" 
      android:onClick="btnCat1" 
      android:src="@drawable/ic_launcher" > 
     </ImageButton> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/imageButton1" 
      android:layout_centerInParent="true" 
      android:clickable="false" 
      android:text="@string/hello_world" /> 
    </RelativeLayout> 
    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" > 

     <ImageButton 
      android:id="@+id/imageButton1" 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:background="@null" 
      android:onClick="btnCat1" 
      android:src="@drawable/ic_launcher" > 
     </ImageButton> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/imageButton1" 
      android:layout_centerInParent="true" 
      android:clickable="false" 
      android:text="@string/hello_world" /> 
    </RelativeLayout> 

</LinearLayout> 

Есть 4 группы изображение и текст, но если открыть его на небольшой размер, я могу видеть только 3 коробки. Как я могу настроить их для отображения на следующей строке?

редактировать: это должно выглядеть как в этом примере

ответ

0

Похоже, вы пытаетесь воспроизвести поведение GridView. Вы можете перейти от 2 до 4 столбцов на основе размера представления с помощью GridView.

Другая альтернатива, которая может работать для вас в зависимости от ваших целевых версий, заключается в том, чтобы указать другой файл макета, который будет использоваться, когда доступно меньше места на экране (проверьте таблицу 2 «smallestWidth» row): Providing Alternative Resources. Вы должны использовать этот подход, указав папку, такую ​​как «res/layout-sw600dp /», и поместите файл с одинаковым именем в эту папку. В каждом из файлов макета затем явно размещайте свои файлы с количеством желаемых столбцов.

Если вы настроили таргетинг на устройства, которые не распознают модификатор ресурса sw, вы можете имитировать это вручную в своем коде, указав файл макета для раздувания по имени и просто выберите большую или меньшую, основанную на размер экрана (который, конечно, доступен вам при запуске приложения).

Сообщите мне, если вы хотите разработать конкретный подход.

+0

спасибо, возможно, это решение – dontHaveName

0

Вы установили постоянную ширину (100dp) для каждого элемента. Он не поместится на экране с шириной ниже 400dp. Один из способов исправить это - использовать горизонтальное представление прокрутки.

Заменить сверху RelativeLayout следующим образом.

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

Если вы хотите иметь другое расположение на разных экранах, как на вашем прилагаемом чертеже, просто использовать два различных XMLs макета, как описано here.

+0

но я не хочу прокручивать их, мне нужно, чтобы они спрыгнули – dontHaveName

+0

См. Мой отредактированный ответ. Они не просто прыгнут вниз. Для такой компоновки вам нужен другой xml. –

+0

Это тоже не поможет. Мне нужно создать файл для каждого разрешения, это похоже на 10 файлов. – dontHaveName

Смежные вопросы