По-прежнему возникают проблемы с GridViews

1

После двух лет разработки Android я все еще не уверен на 100% о том, какие ресурсы мне нужно предоставить, чтобы мой GridView работал на разных устройствах размера и разрешения.

Я все еще участвую, например, недавно я обнаружил, что вам не нужно поставлять все чертежи во всех размерах экрана - если вы поместите что-то в xhdpi, тогда Android будет достаточно умным, чтобы изменять его размер на лету большую часть времени - но там это несколько причуд. Например, если я попытаюсь использовать чертежи, которые определены только в контейнере drawable-xhdpi на устройстве mdpi в GridView, то drawable будет визуально изменяться правильно, но пробелы вокруг него не будут - это все равно будет исходный размер. Первоначально я обошел это, убедительно определяя размеры для всех аспектов GridView и связанного с ним вида адаптера, но у этого была нагрузка на код, обмахивающий вокруг него, поэтому я вручную изменил размер чертежей, поместил их в соответствующие ячейки (drawable-mdpi, drawable-hdpi и drawable-xhdpi) и удалил все форсирование размеров изображений и т.д.

Поэтому у меня есть:

    <GridView
        android:id="@id/home_image_grid"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:columnWidth="100dp"
        android:gravity="center"
        android:listSelector="#00000000"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"
    >
    </GridView>

и макет для каждого элемента:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_margin="0dip"
          android:gravity="center"
          android:orientation="vertical"
          android:padding="0dip">

    <ImageView
            android:id="@id/home_button_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
        />

        <TextView
            android:id="@id/home_button_text"
            android:layout_width="wrap_content"     
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textColor="@color/default_text_colour"
            android:textSize="@dimen/home_button_text"
             />

    </LinearLayout>

Все идет нормально...

Приложение, над которым я сейчас работаю, почти закончил и проводил некоторые тесты на разных устройствах - он хорошо выглядит на обычных устройствах xhdpi, hdpi и mdpi на экране. Затем я расширяю свое тестирование на другие устройства - я тестирую HTC Flyer с большим размером экрана, mdpi - и gridview теперь выглядит мусором - он правильно подбирает изображения mdpi, которые являются крошечными.

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

Итак... Я не задаюсь вопросом, не пропустил ли я здесь трюк - должен ли я сделать первый подход к прикреплению изображений в моей папке с возможностью выгрузки и вручную заставлять размеры для каждой хватки? Должен ли я рисовать новый набор изображений для всех перестановок размера и разрешения экрана?

Как я могу гарантировать, что все, что я делаю, будет хорошо выглядеть на устройстве, на котором я его не тестировал?

В любом случае мне кажется, что я делаю что-то неправильно, но я не могу понять, как это сделать, без лишних хлопот. Может ли кто-нибудь помочь?

Теги:
gridview
screen-size

1 ответ

1
Лучший ответ

Я не уверен, что вы подразумеваете под "форсированием размеров для каждой перестановки", но вы можете поместить соответствующие размеры в следующие папки:

  • рисуем-MDPI
  • рисуем-большой-MDPI

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

Разве это не исправить вашу проблему?

PS: drawable папка предназначена только для XML-чертежей или фотографий, которые не зависят от плотности устройства, а не от изображений для пользовательского интерфейса. Они будут масштабироваться должным образом для каждого разрешения и плотности.

  • 0
    Подгоняя размер - я имею в виду необходимость вручную подбирать правильный размер для изображений. Я могу сделать это, но это плохо масштабируется - мне придется делать это для каждой перестановки размера экрана и разрешения. И если вы видите по ссылке, которую я разместил, руководство разработчика Android гласит: «Сохраните файлы изображений в директории проекта res / drawable /».
  • 0
    Нет, ссылка, которую вы разместили, не говорит об этом, и это сбивает с толку то, что на самом деле говорит. В любом случае, вы всегда должны помещать свои изображения в соответствующую папку drawable-Xdpi и предоставлять конкретные drawables для каждой плотности. Если у вас есть XML Drawables, поместите их в папку drawable . Вы можете поместить копию XML-файла в каждую папку drawable-Xdpi но это не поможет. В любом случае, вы пробовали то, что я предложил?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню