Necesito incluir un gráfico de encabezado en todas mis actividades / vistas. El archivo con el encabezado se llama 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>
Tenga en cuenta el android:background="#00FF00"
(verde), es solo para fines de visualización.
Los incluyo en mis puntos de vista de esta manera:
<?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" />
(...)
Entonces, cuando realmente lo pruebo, el resultado se ve como la imagen de la izquierda, en lugar de cómo debería verse (derecha):
(1) Esta parte, la naranja, es la imagen / ImageView en cuestión
(2) El borde verde no amado. nota: normalmente, el área verde sería transparente: solo es verde porque configuré el background
.
Tenga en cuenta el borde verde alrededor de la imagen en la parte superior; Es parte de ImageView y no puedo entender por qué está allí o cómo puedo deshacerme de él. Estableció todos los rellenos y márgenes en 0 (pero el resultado es el mismo cuando los omito). La imagen es un jpeg * de 480x64px y la puse en res / drawable (no en una de ellas drawable-Xdpi
).
(* jpeg, porque parece que me topé con el viejo problema de gamma png, al principio solucioné el problema haciendo que el borde verde fuera el mismo naranja que la imagen, y los colores no coincidían).
Lo probé en mi htc desire / 2.2 / Build 2.33.163.1 y en el emulador. También describí el problema a alguien en # android-dev; Ella podía reproducir el problema pero tampoco tenía explicación. El objetivo de construcción es 1.6.
actualizar @tehgoose: este código produce exactamente el mismo resultado de relleno superior + inferior.
<?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>
fuente
android:layout_margin="-10dp"
,android:padding="-10dp"
Respuestas:
¡finalmente!
el atributo ajustarViewbounds hizo el truco:
Me topé con esto aquí . ¡gracias por tu ayuda!
fuente
Esto funciona para mi.
fuente
scaleType="fitXY"
Sin embargo, hace algo diferente: cambia la relación de aspecto de la imagen y produce distorsión. Esto puede ser aceptable a veces, por ejemplo, para una imagen de fondo abstracta.android:adjustViewBounds="true"
yandroid:scaleType="fitXY"
era lo que necesitaba para alinear ImageViews en mi diseño. Las imágenes estaban apagadas por un píxel o dos (muy pequeñas en una pantalla de alta resolución) con soloadjustViewBounds
. Agregar elscaleType
parece forzar una escala final de la imagen después de que se ajustan los límites de la vista, lo que obliga a la imagen a escalar al tamaño completo de los nuevos límites.Tiene que ver con la relación de aspecto de la imagen. Por defecto, el sistema mantiene la relación de aspecto original de la fuente de la imagen. Que en la mayoría de los casos no coincide exactamente con el diseño o las dimensiones especificadas en el diseño. Por lo tanto,
android:scaleType
para ajustar la imagen. Por ejemplo, puedes especificarandroid:scaleType="fitXY"
fuente
esos rellenos adicionales se generan automáticamente ya que el Android intentaría obtener la relación de aspecto original. por favor intente abajo
fuente
Puede ser que puedas dar
specific height to imageView say 50dp or 40dp
yadjust image to make green border
desaparecer.P.ej:
android:layout_height="40dp"
fuente
Necesita cambiarlo a "fill_parent"
También es posible que deba escalar su imagen para que tenga la proporción correcta para llenar el marco en el que se encuentra.
No entiendo por qué necesitas el diseño del marco allí en absoluto. Sin ella, tu imagen simplemente llenaría la pantalla de todos modos.
EDITAR: sí, lo siento, el xml es la altura para la vista de imagen.
fuente
ImageView
, no es tan evidente en su respuesta :)use este android: scaleType = "fitXY" en imageview xml
fuente
Debe proporcionar forma alrededor de la vista de imagen para tener una mejor apariencia.
Aquí lo que he usado:
fuente