我知道某处有愚蠢的错误,但我无法弄清楚在哪里。 我得到了以下容器的代码:
public class ImagesView extends LinearLayout {
public ImagesView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ImagesView(Context context) {
super(context);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
int heightSize = MeasureSpec.getSize(heightMeasureSpec);
float ar=(float)896/768;
this.setMeasuredDimension(widthSize, (int) (widthSize/5*(1f/ar)));
//this.setMeasuredDimension(1280,240);
}
}
布局xml:
<?xml version="1.0" encoding="utf-8"?>
<com.rhyboo.net.test.ImagesView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_red_light">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button3"
android:layout_weight="1" />
</com.rhyboo.net.test.ImagesView>
在android studio中我可以看到我的容器大小设置正确,但如果我在容器中添加一些内容,它会将子视图显示为零大小:
我做错了什么?
答案 0 :(得分:2)
你的onMeasure并没有打电话给super.onMeasure ...所以孩子们从未被测量过。另外,在调用父母onMeasure时,你可能想要将模式设置为完全宽度和/或高度。