如何在Android的Xamarin .axml中应用自定义视图

Mis*_*vor 3 android scrollview xamarin

我一直在我的Xamarin应用程序中实现淡入淡出的操作栏和视差滚动到我的Android UI.我需要扩展我的ScrollView,现在它被称为NotifyingScrollView.我现在如何设计我的.axml样式.我不能只在我的axml中写NotifyingScrollView,

namespace NightOut.UiComponents
{
class NotifyingScrollView : ScrollView
{
    public interface IOnScrollChangedListener
    {
        void OnScrollChanged(ScrollView who, int l, int t, int oldl, int oldt);
    }

    private IOnScrollChangedListener mOnScrollChangedListener { get; set; }


    public NotifyingScrollView(Context context) : base(context)
    {

    }

    public NotifyingScrollView(Context context, IAttributeSet attrs) : base(context, attrs)
    {

    }

    public NotifyingScrollView(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle)
    {

    }


    [Android.Runtime.Register("onScrollChanged", "(IIII)V", "GetOnScrollChanged_IIIIHandler")]
    protected override void OnScrollChanged(int l, int t, int oldl, int oldt)
    {
        base.OnScrollChanged(l, t, oldl, oldt);
        if (mOnScrollChangedListener != null)
        {
            mOnScrollChangedListener.OnScrollChanged(this, l, t, oldl, oldt);
        }
    }

}
}
Run Code Online (Sandbox Code Playgroud)

小智 7

通用示例:

namespace My.Namespace
{
    class MyCustomView : View
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

在.axml中以下列方式使用

<my.namespace.MyCustomView />
Run Code Online (Sandbox Code Playgroud)

或者在您的具体示例中:

<nightout.uicomponents.NotifyingScrollView />
Run Code Online (Sandbox Code Playgroud)

请注意,.axml中的命名空间是小写的,classname与C#声明的情况相同.