Saya tidak tahu apakah ada yang masih membaca utas ini atau tidak, tetapi solusi Jeff hanya akan membuat Anda setengah jalan (agak harfiah). Apa yang akan dilakukan onMeasure-nya adalah menampilkan setengah gambar di setengah induknya. Masalahnya adalah memanggil super.onMeasure sebelum setMeasuredDimension
akan mengukur semua anak dalam tampilan berdasarkan ukuran aslinya, lalu memotong tampilan menjadi dua saat setMeasuredDimension
mengubah ukurannya.
Sebagai gantinya, Anda perlu memanggil setMeasuredDimension
(seperti yang diperlukan untuk onMeasure override) dan memberikan tampilan baru LayoutParams
untuk tampilan Anda, lalu panggil super.onMeasure
. Ingat, Anda LayoutParams
berasal dari tipe induk tampilan Anda, bukan tipe tampilan Anda.
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
this.setLayoutParams(new *ParentLayoutType*.LayoutParams(parentWidth/2,parentHeight));
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
Saya percaya satu-satunya saat Anda akan memiliki masalah dengan orang tua LayoutParams
adalah jika orang tua adalah AbsoluteLayout
(yang usang tetapi terkadang masih berguna).