The Android Dokumentasi mengatakan bahwa ada dua ukuran untuk tampilan, yang dimensi yang diukur dan dimensi gambar . Dimensi yang diukur adalah yang dihitung dalam langkah pengukuran ( metode onMeasure ), sedangkan dimensi gambar adalah ukuran sebenarnya di layar. Secara khusus, dokumentasinya mengatakan bahwa:
Nilai-nilai ini mungkin, tetapi tidak harus, berbeda dari lebar dan tinggi yang diukur.
Jadi, pertanyaan saya adalah: apa yang bisa membuat dimensi gambar berbeda dari dimensi yang diukur? Jika metode onMeasure (int, int) mematuhi persyaratan tata letak (diberikan sebagai parameter widthMeasureSpec dan heightMeasureSpec , bagaimana SDK dapat memutuskan bahwa tampilan harus memiliki ukuran gambar yang berbeda?
Selain itu, bagaimana / di mana dalam Kode Sumber Android lebar / tinggi yang diukur digunakan untuk menghitung lebar / tinggi gambar? Saya mencoba untuk melihat ke dalam kode sumber View , tetapi saya tidak tahu bagaimana measureWidth / Height digunakan untuk menghitung lebar / tinggi akhir. Mungkin ada hubungannya dengan bantalannya, tapi saya tidak yakin.
sumber
Jawaban:
Seperti namanya, MeasurWidth / height digunakan selama fase pengukuran dan tata letak.
Izinkan saya memberi contoh,
Sebuah widget diminta untuk mengukur dirinya sendiri, Widget mengatakan bahwa ia ingin berukuran 200px kali 200px. Ini diukurLebar / tinggi.
Selama fase tata letak, yaitu dalam metode onLayout. Metode ini bisa menggunakan measureWidth / height turunannya atau menetapkan lebar / tinggi baru dengan memanggil metode layout tampilan.
katakanlah metode onLayout memanggil childview.layout (0,0,150,150) sekarang lebar / tinggi tampilan berbeda dari lebar / tinggi yang diukur.
Saya menyarankan untuk tidak menggunakan metode MeasurWidth / height di luar onLayout.
untuk meringkas .
Selain itu
public void View.layout(int l, int t, int r, int b)
tampaknya menjadi tempat di mana penetapan posisi dan ukuran terjadi.
sumber