自作したViewのClassをxmlで使う

AndroidでScrollViewなんかの子クラスをつくって、それをlayoutのxmlから呼ぼうとしたところ少しはまったのでメモ。

ポイントはコンストラクタの引数の取り方で、ContextとAttributeSetを指定して親を呼ばないと

Caused by: android.view.InflateException: Binary XML file line #36: Error inflating class com.example.MyHorizontalScrollView

などとエラーを出して落ちます。

例としてはこんな感じ

public class MyHorizontalScrollView extends HorizontalScrollView {

    public MyHorizontalScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
    }
}

でした。