Saya perlu memasukkan grafik header di semua kegiatan / tampilan saya. File dengan header disebut 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>
Perhatikan android:background="#00FF00"
(hijau), itu hanya tujuan visualisasi.
Saya memasukkan mereka ke dalam pandangan saya seperti ini:
<?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" />
(...)
Jadi, ketika saya benar-benar mencobanya, hasilnya terlihat seperti gambar kiri, bukan seperti apa seharusnya (kanan):
(1) Ini - bagian oranye adalah gambar / ImageView dalam pertanyaan
(2) Perbatasan hijau yang tidak dicintai. Catatan: biasanya, area hijau akan transparan - Ini hanya hijau karena saya mengatur background
.
Perhatikan batas hijau di sekitar gambar di atas; Itu adalah bagian dari ImageView dan saya tidak tahu mengapa itu ada di sana atau bagaimana saya bisa menghilangkannya. Ini mengatur semua paddings dan margin ke 0 (tapi hasilnya sama ketika saya menghilangkannya). Gambar adalah jpeg 480x64px * dan saya menaruhnya di res / drawable (bukan di salah satu dari itu drawable-Xdpi
)
(* jpeg, karena sepertinya saya menemukan masalah gamma png lama - pada awalnya saya mengatasi masalah dengan membuat perbatasan hijau oranye sama seperti gambar, dan warnanya tidak cocok.)
Saya mencobanya pada keinginan htc saya / 2.2 / Build 2.33.163.1 dan pada emulator. Saya juga menjelaskan masalahnya kepada seseorang di # android-dev; Dia bisa mereproduksi masalah tetapi juga tidak punya penjelasan. membangun target adalah 1.6.
update @tehgoose: kode ini menghasilkan hasil padded atas + bawah yang sama persis.
<?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"
Jawaban:
akhirnya!
yang atribut adjustViewbounds melakukan trik:
saya tersandung di sini . terima kasih atas bantuan Anda!
sumber
Ini bekerja untuk saya.
sumber
scaleType="fitXY"
melakukan sesuatu yang berbeda: mengubah rasio aspek gambar, menyebabkan distorsi. ini kadang-kadang dapat diterima, misalnya untuk gambar latar belakang abstrak.android:adjustViewBounds="true"
danandroid:scaleType="fitXY"
apa yang saya butuhkan untuk menyelaraskan ImageViews di tata letak saya. Gambar dimatikan oleh satu atau dua piksel (sangat kecil pada tampilan hi-res) hanya denganadjustViewBounds
. MenambahkanscaleType
tampaknya memaksa penskalaan akhir gambar setelah batas tampilan disesuaikan yang memaksa gambar untuk skala ke ukuran penuh dari batas baru.Ini ada hubungannya dengan rasio aspek gambar. Secara default, sistem menyimpan rasio aspek asli dari sumber gambar. Yang dalam kebanyakan kasus tidak sama persis dengan tata letak atau dimensi yang ditentukan dalam tata letak. Karena itu,
android:scaleType
agar sesuai dengan gambar. Misalnya, Anda dapat menentukanandroid:scaleType="fitXY"
sumber
padding ekstra tersebut di-autogenerasi karena android akan mencoba untuk mendapatkan rasio aspek asli. silakan coba di bawah ini
sumber
Mungkin Anda bisa memberi
specific height to imageView say 50dp or 40dp
danadjust image to make green border
menghilang.Misalnya:
android:layout_height="40dp"
sumber
Anda perlu mengubahnya ke "fill_parent"
Anda juga mungkin perlu skala gambar Anda sehingga itu akan menjadi rasio yang tepat untuk mengisi pembingkaian itu.
Saya tidak mengerti mengapa Anda membutuhkan tata letak bingkai di sana. Tanpanya, gambar Anda hanya akan mengisi layar.
Sunting: ya, maaf, xml adalah ketinggian untuk tampilan gambar.
sumber
ImageView
, itu tidak begitu jelas dalam jawaban Anda :)gunakan android ini: scaleType = "fitXY" di imageview xml
sumber
Anda perlu memberikan bentuk di sekitar tampilan gambar untuk memberikan tampilan yang lebih baik.
Di sini apa yang saya gunakan:
sumber