Ich muss in alle meine Aktivitäten / Ansichten eine Kopfgrafik einfügen. Die Datei mit dem Header heißt 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>
Beachten Sie das android:background="#00FF00"
(grün), es dient nur zu Visualisierungszwecken.
Ich beziehe sie wie folgt in meine Ansichten ein:
<?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" />
(...)
Wenn ich es also tatsächlich ausprobiere, sieht das Ergebnis wie das linke Bild aus, anstatt wie es aussehen sollte (rechts):
(1) Dieser orangefarbene Teil ist das betreffende Bild / ImageView.
(2) Der ungeliebte grüne Rand. Hinweis: Normalerweise ist der grüne Bereich transparent. Er ist nur grün, weil ich den Wert festgelegt habe background
.
Beachten Sie den grünen Rand um das Bild oben. Es ist Teil der ImageView und ich kann einfach nicht herausfinden, warum es dort ist oder wie ich es loswerden kann. Alle Auffüllungen und Ränder werden auf 0 gesetzt (aber das Ergebnis ist das gleiche, wenn ich sie weglasse). Das Bild ist ein 480x64px JPEG * und ich habe es in res / drawable gesetzt (nicht in einem der drawable-Xdpi
obwohl).
(* JPEG, weil ich anscheinend auf das alte PNG-Gamma-Problem gestoßen bin - zuerst habe ich das Problem umgangen, indem ich den grünen Rand mit dem Orange orange wie das Bild gemacht habe und die Farben nicht übereinstimmten.)
Ich habe es auf meinem HTC-Wunsch / 2.2 / Build 2.33.163.1 und auf dem Emulator versucht. Außerdem habe ich das Problem jemandem in # android-dev beschrieben; Sie konnte das Problem reproduzieren, hatte aber auch keine Erklärung. Build-Ziel ist 1.6.
update @tehgoose: Dieser Code liefert genau das gleiche oben + unten gepolsterte Ergebnis.
<?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"