#android #imageview #crop #alignment
#Android #просмотр изображений #обрезка #выравнивание
Вопрос:
Я часами искал, возился и плакал, но не могу понять, как поместить изображение в ImageView и представить изображение без изменения масштаба, выровненным по правому краю и обрезать переполнение за пределами левой части ImageView.
Просмотр изображений определяется как таковой:
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/bleh"
></ImageView>
layout_width
установлено значение fill_parent
для растягивания и сжатия изображения в соответствии с размером экрана.
layout_height
имеет значение wrap_content
, поскольку просмотр изображений всегда будет иметь фиксированную высоту, определяемую по изображению.
Я не определил a layout_gravity="right"
потому что, насколько я понимаю, это относится к расположению ImageView внутри его родительского элемента, что в данном случае не имеет никакого эффекта, поскольку ширина ImageView установлена в fill_parent.
Используя приведенный выше код компоновки, изображение масштабируется в соответствии с ImageView. Единственный способ, которым я могу предотвратить масштабирование, — это установить android:scaleType="center"
, который предотвращает масштабирование, но, к сожалению, центрирует изображение.
Есть идеи? В противном случае, в настоящее время я рассматриваю следующие альтернативы:
- Создаю подкласс ImageView и реализую свой собственный метод onDraw().
- Поместите ImageView размером с полноразмерное изображение в ScrollView и переместите прокрутку в крайний правый угол (и отключите любую индикацию того, что это вид прокрутки).
Ответ №1:
Вместо прокрутки — поместите изображение внутри LinearLayout или RelativeLayout. Сделайте layout_width макета параметром fill_parent, а содержимое layout_height — переносом. Затем в ImageView используйте layout gravity right и wrap_content как для ширины, так и для высоты.
<LinerLayout android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView android:layout_gravity="right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bleh"/>
</LinearLayout>
Комментарии:
1. Спасибо!! Чрезвычайно большой лайк! 😀
Ответ №2:
@harmanjd: вы допустили небольшую ошибку, это правильный способ: (извините, я не могу прокомментировать ваш ответ)
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bleh"/>
/>
</LinearLayout>
Комментарии:
1. Я хочу, чтобы TextView (для имени) и Imageview (для изображения) располагались в одной строке, и я хочу, чтобы TextView отображался по левому краю, а Imageview — по правому краю. не могли бы вы, пожалуйста, предложить мне способ?
2. извините, я думаю, что это неправильный способ запросить предложение … у этого сообщения есть другой запрос