मुझे नहीं पता कि कोई अभी भी इस धागे को पढ़ रहा है या नहीं, लेकिन जेफ का समाधान आपको केवल आधा ही मिलेगा (थोरा सचमुच)। उसकी ऑनमार्ट क्या करेगी, आधे माता-पिता में आधी छवि प्रदर्शित करती है। समस्या यह है कि कॉल करने से पहले Super.onMeasure setMeasuredDimensionको मूल आकार के आधार पर दृश्य में सभी बच्चों को मापना होगा, फिर setMeasuredDimensionआकार बदलने पर इसे केवल आधे में काटें ।
इसके बजाय, आपको कॉल करने की आवश्यकता है setMeasuredDimension(जैसा कि एक ऑनराइड ओवरराइड के लिए आवश्यक है) औरLayoutParams अपने दृश्य के लिए एक नया प्रदान करें , फिर कॉल करें super.onMeasure। याद रखें, आपके LayoutParamsविचार आपके माता-पिता के प्रकार से प्राप्त होते हैं, आपके विचार के प्रकार से नहीं।
@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);
}
मेरा मानना है कि माता-पिता के साथ समस्या होने पर एकमात्र समय LayoutParamsहै यदि माता-पिता एक हैं AbsoluteLayout(जो कि पदावनत है, लेकिन फिर भी कभी-कभी उपयोगी है)।