我有自定义视图(MyCustomView
),其中我想添加MvxSpinner
和一些TextView
。我想将所有绑定放在自定义视图上并将它们传递给MvxSpinner,因此我可以使用下面的示例将此新组件集成到我的应用程序中,每次使用不同的绑定。
E.g。
in xml
<MyCustomView
android:width="match_parent"
android:height="match_parent"
local:MvxItemTemplate="@layout/item_spinner_dark"
local:MvxBind="ItemsSource StampTypes"
local:MvxDropDownItemTemplate="@layout/spinner_dropdown_item" />
现在,在代码中,我想使用MvxSpinner
的{{1}}添加IAttributesof
MyCustomView
上面的代码编译并运行,但根据public class MyCustomView : MvxRelativeLayout
{
private MvxSpinner _spinner;
private TextView _errorTxt;
// A bunch of constructors
public MyCustomView (Context context, IAttributeSet attrs, IMvxAdapterWithChangedEvent adapter)
: base(context, attrs, adapter)
{
// Create an MvxSpinner with the attributes
// IMvxAdapterWithChangedEvent is always null
if(adapter == null){
_spinner = new MvxSpinner(context, attrs);
} else {
_spinner = new MvxSpinner(context, attrs, adapter);
}
// Add View to the Layout
AddView(_spinner);
// Add a TextView
_errorTxt = new TextView(context);
_errorTxt.SetPadding(8, 8, 8, 8);
_errorTxt.SetTextAppearance(context, Android.Resource.Attribute.TextAppearanceLarge);
_errorTxt.SetTextColor(Android.Graphics.Color.Red);
AddView(_errorTxt);
}
}
没有填充MvxSpinner。当我删除MyCustomView并直接使用MvxSpinner时,所有工作都按预期工作。下面是一个普通的MvxSpinner(就像魅力一样)和MyCustomView的结果的截图,其中MvxSpinner没有显示任何项目。
起初,我认为使用IAttributes创建MvxSpinner会起到作用。但是,IMvxAdapterWithChangedEvent参数为null,因此我试图自己创建适配器。我错过了什么?
问题:
那么,我如何使用这些local:MvxBind="ItemsSource StampTypes"
以编程方式创建MvxSpinner
?
注意:我从RelativeLayout扩展,因为当我从MvxSpinner扩展时,我无法在视图中添加TextView。
答案 0 :(得分:1)
我认为你不能使用MvxRelativeLayout
做你想做的事。
MvxRelativeLayout
以允许您绑定相对布局中的项目集合 - 它不是为您手动插入项目而设计的。
您可以通过以下方式获得符合“可重用控制”要求的内容:
<include>
阻止。