Ich muss eine Kopfgrafik in alle meine Aktivitäten/Ansichten 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="https://stackoverflow.com/questions/5830503/@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 – der orangefarbene – Teil ist das betreffende Bild/ImageView
(2) Der ungeliebte grüne Rand. anmerkung: normalerweise wäre der grüne bereich durchsichtig – er ist nur grün weil ich den einstelle background
.
Beachten Sie den grünen Rand um das Bild oben; Es ist Teil von ImageView und ich kann einfach nicht herausfinden, warum es da ist oder wie ich es loswerden kann. Es hat alle Auffüllungen und Ränder 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 abgelegt (nicht in einer der drawable-Xdpi
obwohl).
(* jpeg, weil ich anscheinend über das alte png-Gamma-Problem gestolpert bin – zuerst habe ich das Problem umgangen, indem ich den grünen Rand genauso orange wie das Bild gemacht habe und die Farben nicht übereinstimmten.)
Ich habe es auf meinem HTC Desire/2.2/Build 2.33.163.1 und auf dem Emulator ausprobiert. 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.
@tehgoose aktualisieren: Dieser Code liefert genau das gleiche oben + unten aufgefüllte 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="https://stackoverflow.com/questions/5830503/@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>
Negative Rand- und/oder Auffüllwerte können ebenfalls funktionieren –
android:layout_margin="-10dp"
,android:padding="-10dp"
– samus
16. November 2018 um 21:22 Uhr