ImageViews внутри RelativeLayout, который вложен в LinearLayout - PullRequest
0 голосов
/ 09 марта 2011

Моя цель - показать 6 изображений (1 изображение, 6 раз) через одну строку на моем экране. Мой подход заключался во вложении RelativeLayout в LinearLayout. Моя проблема в том, что, когда я нахожусь в «портретном» режиме, я не могу видеть все свои изображения. Чем больше я изменяю размер своего изображения, тем больше изображений я могу уместить, но я нахожусь в точке, где я не хочу, чтобы оно было меньше. Я предположил, что по умолчанию это будет просто завернуть то, что он не может поместиться, но это не так. Theres нет автоматического изменения размера, чтобы соответствовать? Кроме того, как я могу вручную решить, сколько места находится между каждым изображением? Спасибо!

1 Ответ

0 голосов
/ 09 июня 2011

По сути, вам нужно предоставить два разных xml-файла для вашего приложения, один для портрета, один раз для ландшафта согласно: Предоставление ресурсов . Android выберет правильный XML-файл в зависимости от ориентации.

и ImageView.ScaleType объясняет различные стили масштабирования

Вот что я бы предложил:

res/layout-land/main.xml

<?xml version="1.0" encoding="utf-8" ?> 
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/debris_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="fitCenter"
        android:weight="1"
        android:src="@drawable/image1"
    </ImageView
    ... repeat 5 more times ...
</LinearLayout>

элемент weight должен привести их все в соответствие, но может возникнуть конфликт с scaleType. в любом случае, это должно быть сделано для вашего ландшафта, для портрета, вы можете сделать так, чтобы было два ряда изображений, или вы могли бы использовать horizontalScrollView, как показано ниже:

res/layout-port/main.xml

<?xml version="1.0" encoding="utf-8" ?>
<HorizontalScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">        
        <ImageView
            android:id="@+id/debris_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="fitCenter"
            android:weight="1"
            android:padding="15dp"
            android:src="@drawable/image1"
        </ImageView
        ... repeat 5 more times ...
    </LinearLayout>
</HorizontalScrollView>    

действительно, вы могли бы просто использовать портрет main.xml в качестве единственного файла макета и просто иметь горизонтальную прокрутку независимо от ориентации. вам может понадобиться несколько раз изменить портрет main.xml, так как я на работе, и я не уверен, насколько хорошо weight работает с horizontalScrollView

насколько расстояние между каждым элементом, вы бы использовали android: padding , как у меня выше.

...