如何以编程方式设置自定义视图的宽度和高度?

时间:2011-12-19 06:57:22

标签: android android-layout classcastexception

我创建了一个名为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

如何解决此异常? 请帮帮我..

3 个答案:

答案 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。