Мне нужно включить изображение заголовка во все мои действия / представления. Файл с заголовком называется header.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#0000FF"
android:padding="0dip">
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="0dip"
android:layout_marginTop="0dip"
android:layout_marginBottom="0dip"
android:padding="0dip"
android:paddingTop="0dip"
android:paddingBottom="0dip"
android:layout_gravity="fill"
android:background="#00FF00"
/>
</FrameLayout>
Обратите внимание на android:background="#00FF00"
(зеленый), это просто визуализация целей.
Я включаю их в свои взгляды, как это:
<?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="vertical"
style="@style/white_background">
<include layout="@layout/header" />
(...)
Итак, когда я на самом деле это пробую, результат выглядит как левое изображение, а не как (справа):
(1) Это - оранжевая - часть является изображением / ImageView, о котором идет речь
(2) Нелюбимая зеленая рамка. примечание: обычно зеленая область будет прозрачной - она только зеленая, потому что я установил background
.
Обратите внимание на зеленую рамку вокруг изображения вверху; Это часть ImageView, и я просто не могу понять, почему он существует и как я могу от него избавиться. Он устанавливает все отступы и поля на 0 (но результат тот же, когда я их опускаю). Изображение в формате 480x64px jpeg *, и я поместил его в res / drawable (но не в один из них drawable-Xdpi
).
(* jpeg, потому что кажется, что я наткнулся на старую проблему png-гаммы - сначала я обошел проблему, сделав зеленую рамку такой же оранжевой, как на картинке, и цвета не совпадали.)
Я попробовал это на моем htc desire / 2.2 / Build 2.33.163.1 и на эмуляторе. Также я описал проблему кому-то в # android-dev; Она могла воспроизвести проблему, но также не имела объяснения. Цель сборки - 1.6.
update @tehgoose: этот код дает точно такой же результат + верх + низ.
<?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="vertical"
style="@style/white_background">
<!-- <include layout="@layout/header" /> -->
<ImageView
android:src="@drawable/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00FF00"
android:layout_weight="0"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dip"
android:layout_weight="1">
(... rest of the elements)
</LinearLayout>
</LinearLayout>
android:layout_margin="-10dp"
android:padding="-10dp"
Ответы:
Ну наконец то!
атрибут adjustViewbounds сделал трюк:
я наткнулся на это здесь . Спасибо за вашу помощь!
источник
Меня устраивает.
источник
scaleType="fitXY"
делает что-то другое, хотя: он изменяет соотношение сторон изображения, что приводит к искажению. иногда это может быть приемлемо, например, для абстрактного фонового изображения.android:adjustViewBounds="true"
иandroid:scaleType="fitXY"
был тем, что мне нужно для выравнивания ImageViews в моем макете. Изображения были отключены на один или два пикселя (очень маленькие на экране высокого разрешения) с простоadjustViewBounds
.scaleType
Кажется, что добавление символа заставляет окончательное масштабирование изображения после того, как границы вида отрегулированы, что заставляет изображение масштабироваться до полного размера новых границ.Это связано с соотношением сторон изображения. По умолчанию система сохраняет исходное соотношение сторон источника изображения. Что в большинстве случаев не совсем соответствует макету или размерам, указанным в макете. Следовательно,
android:scaleType
чтобы соответствовать изображению. Например, вы можете указатьandroid:scaleType="fitXY"
источник
эти дополнительные отступы генерируются автоматически, так как Android будет пытаться получить исходное соотношение сторон. пожалуйста попробуйте ниже
источник
Может быть, вы можете дать
specific height to imageView say 50dp or 40dp
иadjust image to make green border
исчезнуть.Например:
android:layout_height="40dp"
источник
Вам нужно изменить его на "fill_parent"
Вам также может понадобиться масштабировать изображение, чтобы оно соответствовало правильному соотношению для заполнения кадра, в котором оно находится.
Я не понимаю, зачем вам вообще нужен макет кадра. Без этого ваше изображение в любом случае просто заполнило бы экран.
РЕДАКТИРОВАТЬ: да, извините, XML это высота для изображения.
источник
ImageView
, это не так очевидно в вашем ответе :)используйте этот андроид: scaleType = "fitXY" в imageview xml
источник
Вы должны обеспечить форму вокруг изображения, чтобы лучше выглядеть.
Вот что я использовал:
источник