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 setMeasuredDimensionakan mengukur semua anak dalam tampilan berdasarkan ukuran aslinya, lalu memotong tampilan menjadi dua saat setMeasuredDimensionmengubah ukurannya.
Sebagai gantinya, Anda perlu memanggil setMeasuredDimension(seperti yang diperlukan untuk onMeasure override) dan memberikan tampilan baru LayoutParamsuntuk tampilan Anda, lalu panggil super.onMeasure. Ingat, Anda LayoutParamsberasal 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 LayoutParamsadalah jika orang tua adalah AbsoluteLayout(yang usang tetapi terkadang masih berguna).