我想使用扩展LinearLayout类的自定义布局并覆盖onMeasure()方法,如下所示:
<com.myPackage.CustomLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
.....
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
.....
</LinearLayout>
</com.myPackage.CustomLayout>
我的自定义布局:
public class CustomLayout extends LinearLayout {
private static final double VIEW_ASPECT_RATIO = 2;
private ViewAspectRatioMeasurer varm = new ViewAspectRatioMeasurer(
VIEW_ASPECT_RATIO);
public HomeLayout(Context context) {
super(context);
}
public HomeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
varm.measure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(varm.getMeasuredWidth(), varm.getMeasuredHeight());
}
}
问题是它没有显示所有子布局,所以我如何才能完成这项工作? 谢谢!
(抱歉我的英语不好)
编辑:我已经使用了这个课程https://github.com/jesperborgstrup/buzzingandroid/blob/master/src/com/buzzingandroid/ui/ViewAspectRatioMeasurer.java
答案 0 :(得分:0)
您使用android:orientation="horizontal"
CustomLayout
(扩展LinearLayout
}和android:layout_width="match_parent"
为您的孩子LinearLayout
时出错。
尝试将布局更改为:
<com.myPackage.CustomLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
layout_weight="1" >
.....
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
layout_weight="1">
.....
</LinearLayout>
</com.myPackage.CustomLayout>
修改:如果你共享了LinearLayout
的代码,我也没有看到使用CustomLayout
的子类的任何原因。