androidandroid-layoutlayoutcustom-view

How do I access layout_height from within my custom view?


I have a custom view and I simply wish to access the xml layout value of layout_height.

I am presently getting that information and storing it during onMeasure, but that only happens when the view is first painted. My view is an XY plot and it needs to know its height as early as possible so it can start performing calculations.

The view is on the fourth page of a viewFlipper layout, so the user may not flip to it for a while, but when they do flip to it, I would like the view to already contain data, which requires that I have the height to make the calculations.

Thanks!!!


Solution

  • From public View(Context context, AttributeSet attrs) constructor docs:

    Constructor that is called when inflating a view from XML. This is called when a view is being constructed from an XML file, supplying attributes that were specified in the XML file.

    So to achieve what you need, provide a constructor to your custom view that takes Attributes as a parameter, i.e.:

    public CustomView(final Context context, AttributeSet attrs) {
        super(context, attrs);
        String height = attrs.getAttributeValue("android", "layout_height");
        //further logic of your choice..
    }