SuReSh PaTi
SuReSh PaTi

Reputation: 1371

How to set width and height for custom view in programmatically?

I have created a custom view named MyDraw ,this is my MyDraw code,

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);

    }
         ........................................
}

I have added the view in XML file using package name. It is working fine. Now I want to set height and width for the MyDraw in run time,for that i have used following code,

mMyDraw.setLayoutParams(new LayoutParams(220, 300));

but i got Exception like,

java.lang.ClassCastException: android.view.ViewGroup$LayoutParams

How to solve this exception? please help me..

Upvotes: 7

Views: 23759

Answers (3)

Mehdi Amirafshar
Mehdi Amirafshar

Reputation: 13

There is a simple way: based on our custom view parent class we can use layout param.

for example if our custom view is extended from FrameLayout:

FrameLayout.LayoutParams params = (LayoutParams) findViewById(R.id.root).getLayoutParams();
params.width = newwidth;
params.height = newHeight;
setLayoutParams(params);

where "R.id.root" is id of our root view in custom_view.xml that in this case is FrameLayout.

Upvotes: 1

Walid Hossain
Walid Hossain

Reputation: 2714

Override the onMeasure() method, have a look here

Upvotes: 11

Dimitris Makris
Dimitris Makris

Reputation: 5183

You must override the onMeasure() method of the View.

For a nice example you can check here: http://kahdev.wordpress.com/2008/09/13/making-a-custom-android-button-using-a-custom-view/

And a very cool video that I would recommend is here: http://marakana.com/forums/android/general/563.html

Hope this helps!

Upvotes: 22

Related Questions