我创建了一个名为MyDraw的自定义视图,这是我的MyDraw代码,
public class MyDraw extends View {
public MyDraw(Context context) {
super(context);
}
public MyDraw(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public MyDraw(Context context, AttributeSet attrs) {
super(context, attrs);
}
........................................
}
我已使用包名称在XML文件中添加了视图。它工作正常。现在我想在运行时设置MyDraw的高度和宽度,因为我使用了以下代码,
mMyDraw.setLayoutParams(new LayoutParams(220, 300));
但是我得到了例外,
java.lang.ClassCastException:android.view.ViewGroup $ LayoutParams
如何解决此异常? 请帮帮我..
答案 0 :(得分:18)
您必须覆盖View的onMeasure()方法。
有一个很好的例子,你可以在这里查看:http://kahdev.wordpress.com/2008/09/13/making-a-custom-android-button-using-a-custom-view/
我推荐的一个非常酷的视频是:http://marakana.com/forums/android/general/563.html
希望这有帮助!
答案 1 :(得分:9)
覆盖onMeasure()
方法,看看here
答案 2 :(得分:0)
有一个简单的方法: 根据我们的自定义视图父类,我们可以使用布局参数。
例如,如果我们的自定义视图是从FrameLayout扩展的:
FrameLayout.LayoutParams params = (LayoutParams) findViewById(R.id.root).getLayoutParams();
params.width = newwidth;
params.height = newHeight;
setLayoutParams(params);
其中“ R.id.root”是custom_view.xml中我们的根视图的ID,在本例中为FrameLayout。