Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin Android TabLayout徽章:绑定文本Mvvmcross_C#_Android_Xamarin_Xamarin.android - Fatal编程技术网

C# Xamarin Android TabLayout徽章:绑定文本Mvvmcross

C# Xamarin Android TabLayout徽章:绑定文本Mvvmcross,c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,我做了一个自定义布局,在Android上的标签上添加了一个徽章。这个徽章是一个文本视图。 如何绑定此组件? 有可能吗 我的自定义徽章布局: <LinearLayout android:id="@+id/badgeCotainer" android:layout_width="wrap_content" android:layout_height="20dp" android:layout_marginStart="90dp"

我做了一个自定义布局,在Android上的标签上添加了一个徽章。这个徽章是一个文本视图。 如何绑定此组件? 有可能吗

我的自定义徽章布局:

 <LinearLayout
        android:id="@+id/badgeCotainer"
        android:layout_width="wrap_content"
        android:layout_height="20dp"
        android:layout_marginStart="90dp"
        android:background="@drawable/notifications_background"
        android:gravity="center"
        android:layout_gravity="right"
        android:minWidth="16dp">

        <TextView
            android:id="@+id/badge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAlignment="center"
            android:textColor="#011f7a"
            android:textSize="10sp" 
            android:text="0"
            app:MvxBind="Text ContMaterial"/>
</LinearLayout>

我的活动:使用MvxViewPagerFragmentInfo

private void InitTabs()
        {
            var viewPager = FindViewById<ViewPager>(Resource.Id.materiais_viewpager);
            if (viewPager != null)
            {
                var fragments = new List<MvxViewPagerFragmentInfo>
                {
                    new MvxViewPagerFragmentInfo("Requisição",
                        typeof(CadastraRequisicaoFragment), ViewModel),
                    new MvxViewPagerFragmentInfo("Materiais",
                        typeof(ListaMateriaisFragment), ViewModel),
                };


                viewPager.Adapter = new MvxCachingFragmentStatePagerAdapter(this, SupportFragmentManager, fragments);
            }

            var tabLayout = FindViewById<TabLayout>(Resource.Id.requisicao_tabs);
            tabLayout.SetupWithViewPager(viewPager);
             tabLayout.GetTabAt(1).SetCustomView(Resource.Layout.tab_header_badge);

        }
private void InitTabs()
{
var viewPager=findviewbyd(Resource.Id.materialis_viewPager);
if(viewPager!=null)
{
var fragments=新列表
{
新MvxViewPagerFragmentInfo(“Requisiço”,
类型(地籍碎片),视图模型,
新MvxViewPagerFragmentInfo(“材料”,
typeof(ListaMaterialIsFragment),ViewModel,
};
viewPager.Adapter=新的MvxCachingFragmentStatePagerAdapter(此,SupportFragmentManager,fragments);
}
var tabLayout=findviewbyd(Resource.Id.requisicao\u选项卡);
tabLayout.SetupWithViewPager(viewPager);
tabLayout.GetTabAt(1).SetCustomView(Resource.Layout.tab\u header\u badge);
}
在视图模型上,我使用了raisedPropertyChanged() 徽章显示正常,只是不更改值。

当您提供自定义视图时,mvvmcross中没有任何内容可以绑定表格布局的内容。不过,您可以尝试使用自定义的方法

基本上,用MvxFrameControl替换LinearLayout,然后

tabLayout.SetupWithViewPager(viewPager);
使用BindingInflate方法膨胀自定义视图,并为MvxFrameControl的BindingContext设置一个值,然后使用该操作的结果设置自定义tablayout视图

这可能会奏效


另一种方法是,在活动中收听ViewModel的“PropertyChanged”事件,并在应用时手动更改选项卡布局。

当您提供自定义视图时,mvvmcross中没有任何内容可以绑定选项卡布局的内容。不过,您可以尝试使用自定义的方法

基本上,用MvxFrameControl替换LinearLayout,然后

tabLayout.SetupWithViewPager(viewPager);
使用BindingInflate方法膨胀自定义视图,并为MvxFrameControl的BindingContext设置一个值,然后使用该操作的结果设置自定义tablayout视图

这可能会奏效


另一种方法是,在活动中收听ViewModel的“PropertyChanged”事件,并在应用时手动更改选项卡布局。

谢谢Miiite,我将不得不重做我的结构,但我相信这是唯一的解决方案。谢谢Miiite,我将不得不重做我的结构,但我相信这是唯一的解决方案。