Je dois inclure un graphique d'en-tête dans toutes mes activités / vues. Le fichier avec l'en-tête s'appelle 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>
Notez le android:background="#00FF00"
(vert), ce n'est qu'à des fins de visualisation.
Je les inclut dans mes vues comme ceci:
<?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" />
(...)
Donc, lorsque je l'essaye, le résultat ressemble à l'image de gauche, au lieu de ce à quoi il devrait ressembler (à droite):
(1) Cette partie - la partie orange - est l'image / ImageView en question
(2) La bordure verte non aimée. Remarque: normalement, la zone verte serait transparente - Elle est uniquement verte car j'ai défini le background
.
Notez la bordure verte autour de l'image en haut; Cela fait partie de ImageView et je ne peux tout simplement pas comprendre pourquoi il est là ou comment je peux m'en débarrasser. Il définit tous les rembourrages et marges à 0 (mais le résultat est le même lorsque je les omis). L'image est un jpeg de 480x64px * et je l'ai mis dans res / drawable (pas dans l'un des drawable-Xdpi
si).
(* jpeg, car il semble que je suis tombé sur l'ancien problème gamma png - au début, j'ai contourné le problème en faisant de la bordure verte la même orange que l'image, et les couleurs ne correspondaient pas.)
Je l'ai essayé sur mon htc desire / 2.2 / Build 2.33.163.1 et sur l'émulateur. J'ai également décrit le problème à quelqu'un dans # android-dev; Elle pouvait reproduire le problème mais n'avait pas non plus d'explication. l'objectif de construction est 1.6.
update @tehgoose: ce code donne exactement le même résultat complété en haut et en bas.
<?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"