El relleno no deseado alrededor de un ImageView

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> 

Nota el android:background="#00FF00" (verde), es sólo fines de visualización.

Los incluyo en mis puntos de vista como este:

 <?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" /> (...) 

Así que, cuando realmente lo pruebo, el resultado se ve como la imagen de la izquierda, en lugar de lo que debería ser (derecha):

Nota la frontera verde

(1) esto – la parte naranja es la imagen / ImageView en cuestión
(2) la frontera verde no amada. Nota: normalmente, el área verde sería transparente – es sólo verde porque i establecer el background .

Observe el borde verde alrededor de la imagen en la parte superior; Es parte del ImageView y no puedo entender por qué está ahí o cómo puedo deshacerme de él. Estableció todos los rellenos y márgenes a 0 (pero el resultado es el mismo cuando los omito). La imagen es un jpeg * 480x64px y lo puse en res / drawable (no en uno de los drawable-Xdpi sin embargo).

(* Jpeg, porque parece que tropecé con el viejo problema de gamma png – al principio he trabajado alrededor del problema haciendo la frontera verde de la misma naranja que la imagen, y los colores no coinciden.)

Lo probé en mi deseo htc / 2.2 / Build 2.33.163.1 y en el emulador. También he descrito 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.

Update @tehgoose: este código produce el mismo resultado top + bottom acolchado.

 <?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> 

¡finalmente!

 <ImageView (...) android:adjustViewBounds="true" /> 

El atributo adjustViewbounds hizo el truco:

Defina esto como true si desea que ImageView ajuste sus límites para conservar la relación de aspecto de su dibujable.

Me topé con él aquí . ¡gracias por tu ayuda!

 android:scaleType="fitXY" 

Esto funciona para mi.

Tiene que ver con la relación de aspecto de la imagen. De forma predeterminada, 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,

  1. Cambia el tamaño de la imagen para que se ajuste al diseño especificado o
  2. Use android:scaleType para ajustar la imagen. Por ejemplo, puede especificar android:scaleType="fitXY"

Puede ser que usted puede dar specific height to imageView say 50dp or 40dp y adjust image to make green border desaparecer el adjust image to make green border .

Por ejemplo: android:layout_height="40dp"

 android:layout_height="wrap_content" 

Necesita cambiarlo a "fill_parent"

También puede que tenga que escalar su imagen por lo que será la razón correcta para llenar el framelayout está.

No entiendo por qué necesita el diseño del marco en absoluto. Sin ella, su imagen sólo llenar la pantalla de todos modos.

EDIT: sí, lo siento, el xml es la altura de la vista de la imagen.

Usted necesita proporcionar forma alrededor de imageview para dar una mirada mejor.

Aquí lo que he utilizado:

 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <!--<gradient android:startColor="#FFFFFF" android:endColor="#969696" android:angle="270"> --> <gradient android:startColor="#FFFFFF" android:endColor="#FFFFFF" android:angle="270"> </gradient> <stroke android:width="2dp" android:color="@color/graycolor" /> <corners android:radius="2dp" /> <padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp" /> 

  • Android: Cómo vincular parse.com a facebook
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.