Android GridView 3 x 6 Обрезка изображений - PullRequest
4 голосов
/ 16 марта 2011

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

http://developer.android.com/resources/tutorials/views/hello-gridview.html

, который, казалось, был близок к тому, что я хочу.

Единственное отличие, которое я вижу, это то, что я хочу ровно 18 изображений, и все они должны быть квадратного размера.Я установил количество столбцов равным 3, а затем загрузил 18 изображений, которые должны быть в 6 строках.Я хочу, чтобы изображения полностью заполняли каждую строку и не оставляли нежелательных лишних пробелов.Я не знаю размер изображений, пока они не будут загружены в телефон.Надеюсь, для начала они будут почти квадратными, но мне нужно обрезать центр, чтобы сделать их идеально квадратными, а затем масштабировать их, чтобы полностью заполнить 3 столбца.Мне нужны изображения, чтобы сохранить их пропорции.

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

Самое близкое, что я получил, это изменил учебник GridView следующим образом, когда мой эмулятор установлен на 480x800:


imageView.setLayoutParams(new GridView.LayoutParams(480/3, 480/3));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(0, 0, 0, 0);
imageView.setAdjustViewBounds(true);

====

&lt GridView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:numColumns="3" 
    android:stretchMode="columnWidth" 
    android:gravity="fill|clip_horizontal|clip_vertical"
/ > 

Это почти правильно.Для тестовых изображений с квадратами, которые я использую, не хватает пары пикселей, не квадратные изображения не обрезаются, а вместо этого помещаются внутрь с черным прямоугольником, чтобы сохранить соотношение, а жестко закодированные значения являются хрупкими и не будут работать на всех телефонах, ориентациях илимакеты.Мне кажется интересным, что документация CENTER_CROP, кажется, утверждает, что она будет делать то, что я хочу, расширяясь, чтобы соответствовать изображению, но вместо этого, похоже, CENTER_INSIDE.

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

Пожалуйста, не выдумывай.

Спасибо.

1 Ответ

0 голосов
/ 07 сентября 2017

Очевидно, CENTRE_CROP является правильным ответом, но можете ли вы загрузить скриншот, чтобы я мог разобраться и помочь вам с проблемой, с которой вы столкнулись?

Также я предлагаю вам загрузить XML-файл item_layout.

Убедитесь, что вы использовали <ImageView> ширину для определенного размера.

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

...