android - studio - Relleno indeseado alrededor de un ImageView
imageview android studio set image (6)
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), solo tiene 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 lo pruebo, el resultado se ve como la imagen de la izquierda, en lugar de como debería verse (derecha):
(1) esto - la parte naranja - es la imagen / ImageView en cuestión
(2) el borde verde no deseado. nota: normalmente, el área verde sería transparente; es solo verde porque configuré el background
.
observe el borde verde alrededor de la imagen en la parte superior; es parte de ImageView y simplemente no puedo entender por qué está allí o cómo puedo deshacerme de él. establece todos los rellenos y márgenes a 0 (pero el resultado es el mismo cuando los omito). la imagen es 480x64px jpeg * y la puse en res / drawable-Xdpi
aunque no en uno de los drawable-Xdpi
).
(* jpeg, porque parece que tropecé con el viejo problema de png gamma - al principio trabajé alrededor del problema haciendo que el borde verde fuera del mismo naranja que la imagen, y los colores no coincidieron).
Lo intenté 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 compilación es 1.6.
update @tehgoose: este código produce exactamente el mismo resultado top + bottom rellenado.
<?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:
Establezca esto en verdadero si desea que ImageView ajuste sus límites para preservar la relación de aspecto de su dibujo.
me encontré con esto aquí . ¡gracias por tu ayuda!
Debe proporcionar forma alrededor de la vista de la imagen para ver mejor.
Aquí lo que he usado:
<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" />
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
.
Ejemplo: android:layout_height="40dp"
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,
- Cambie el tamaño de la imagen para que se ajuste al diseño especificado o
- Use
android:scaleType
para adaptarse a la imagen. Por ejemplo, puede especificarandroid:scaleType="fitXY"
android:layout_height="wrap_content"
Debes cambiarlo a "fill_parent"
También es posible que necesite escalar su imagen, por lo que será la proporción correcta para completar el diseño del cuadro en el que se encuentra.
No entiendo por qué necesitas el diseño del cuadro allí. Sin él, tu imagen simplemente llenaría la pantalla de todos modos.
EDITAR: sí, lo siento, el xml es el alto para la vista de la imagen.
android:scaleType="fitXY"
Esto funciona para mi.