OnMeasure () 'ı geçersiz kılmanın doğru yolu nedir? Çeşitli yaklaşımlar gördüm. Örneğin, Profesyonel Android Geliştirme , boyutları hesaplamak için MeasureSpec'i kullanır ve ardından setMeasuredDimension () çağrısıyla sona erer. Örneğin:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
this.setMeasuredDimension(parentWidth/2, parentHeight);
}
Öte yandan, bu gönderiye göre "doğru" yol, MeasureSpec'i kullanmak, setMeasuredDimensions () 'ı çağırmak, ardından setLayoutParams () çağrısı yapmak ve super.onMeasure () çağrısıyla bitirmektir. Örneğin:
@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);
}
Öyleyse doğru yol hangisi? Her iki yaklaşım da benim için% 100 işe yaramadı.
Sanırım gerçekten sorduğum şey, onMeasure (), düzen, çocuk görüşlerinin boyutları vb. Açıklayan bir öğretici biliyor mu?