ImageView с выровненным по правому краю обрезанным немасштабированным контентом - PullRequest
2 голосов
/ 14 апреля 2011

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

ImageView определяется следующим образом:

<ImageView
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:src="@drawable/bleh"
></ImageView>

layout_width установлено на fill_parent для растягивания и сжатия ImageView в соответствии с экраном.

layout_height установлен на wrap_content, потому что ImageView всегда будет иметь фиксированную высоту, определенную по изображению.

Я не определил layout_gravity="right", потому что, насколько я понимаю, это относится к расположению ImageView внутриего родитель, который в этом случае не имеет никакого эффекта, потому что ширина ImageView установлена ​​в fill_parent.

Используя приведенный выше код компоновки, изображение масштабируется, чтобы соответствовать ImageView.Единственный способ предотвратить масштабирование - это установить android:scaleType="center", который предотвращает масштабирование, но, к сожалению, центрирует изображение.

Что за идеи?В противном случае, я в настоящее время играю со следующими альтернативами:

  • Подкласс ImageView и реализую мой собственный метод onDraw ().
  • Поместите полноразмерное изображение ImageView в ScrollView изафиксируйте прокрутку в крайнем правом углу (и отключите все признаки того, что это вид прокрутки).

Ответы [ 2 ]

5 голосов
/ 14 апреля 2011

Вместо просмотра с прокруткой - поместите изображение внутри LinearLayout или RelativeLayout. Создайте содержимое layout_width fill_parent и содержимое layout_height. Затем в ImageView используйте разметку силы тяжести вправо и 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>
2 голосов
/ 21 марта 2012

@ 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>
...