Monodroid标签视图

时间:2011-09-22 12:36:13

标签: android-tabhost xamarin.android

实施Tabs Widget Sample后,我尝试使用它并在更改为第二个标签后添加第三个标签

protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        // Set our view from the "main" layout resource  
        SetContentView(Resource.Layout.Main);

        TabHost.TabSpec spec;

        spec = TabHost.NewTabSpec("tab_test1").SetIndicator("TAB 1").SetContent(Resource.Id.textview1);
        TabHost.AddTab(spec);

        spec = TabHost.NewTabSpec("tab_test2").SetIndicator("TAB 2").SetContent(Resource.Id.textview2);
        TabHost.AddTab(spec);

        //spec = TabHost.NewTabSpec("tab_test3").SetIndicator("TAB 3").SetContent(Resource.Id.widget0);
        //TabHost.AddTab(spec);

        TabHost.TabChanged += new EventHandler<Android.Widget.TabHost.TabChangeEventArgs>(TabHost_TabChanged);

        TabHost.CurrentTab = 0;
    }

    void TabHost_TabChanged(object sender, TabHost.TabChangeEventArgs e)
    {
        if (TabHost.TabWidget.TabCount < 3)
        {
            TabHost.TabSpec spec;

            spec = TabHost.NewTabSpec("tab_test3").SetIndicator("TAB 3").SetContent(Resource.Id.widget0);
            TabHost.AddTab(spec);
        }
    }

问题在于,在单击选项卡之前,我在第一个视图上看到第三个视图覆盖,即使第三个选项卡仅在单击第二个选项卡后出现。这是怎么回事?

1 个答案:

答案 0 :(得分:2)

我猜是因为第三个标签没有标签可以去(因为我们没有创建TabSpec)所以它只是直接在屏幕上显示它。

您可以设置当第三个标签对于下面示例中显示的不可见时要显示的内容;

<TextView 
    android:visibility="invisible"
    android:id="@+id/textview3"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:text="this is a third tab" />

然后当显示标签时,文本视图再次可见。

希望这有帮助,

ChrisNTR