मुझे नहीं पता कि कोई अभी भी इस धागे को पढ़ रहा है या नहीं, लेकिन जेफ का समाधान आपको केवल आधा ही मिलेगा (थोरा सचमुच)। उसकी ऑनमार्ट क्या करेगी, आधे माता-पिता में आधी छवि प्रदर्शित करती है। समस्या यह है कि कॉल करने से पहले 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
(जो कि पदावनत है, लेकिन फिर भी कभी-कभी उपयोगी है)।