使用 tabhost 中的每个选项卡设置 axml 布局:Xamarin Android

Posted

技术标签:

【中文标题】使用 tabhost 中的每个选项卡设置 axml 布局:Xamarin Android【英文标题】:Set axml layout with each tab in tabhost: Xamarin Android 【发布时间】:2014-01-05 03:11:19 【问题描述】:

如何为每个选项卡设置 xml 布局?

创建每个选项卡的代码

 private void CreateTab(Type activityType, string tag, string label, int drawableId)
    
        TabHost.TabSpec spec;

        var intent = new Intent(this, activityType);
        intent.AddFlags(ActivityFlags.NewTask);


        spec = TabHost.NewTabSpec(tag);

        var drawableIcon = Resources.GetDrawable(drawableId);
        spec.SetIndicator("", drawableIcon);

        spec.SetContent(intent);

        TabHost.AddTab(spec);
     

这是第一个标签活动的代码

[Activity(Label = "My Activity")]
public class WhatsOnActivity : Activity

    protected override void OnCreate(Bundle savedInstanceState)
    
        base.OnCreate(savedInstanceState);
        //TextView textview = new TextView(this);   // working 
        //textview.Text = "This is Whats on activity tab";
        //SetContentView(textview);

        SetContentView(Resource.Layout.Feed); // not working
    

触发异常。我怎样才能让它工作?

请帮忙, 谢谢

【问题讨论】:

【参考方案1】:

希望这个问题仍然有效。 请参考tabhost:TabHost Walkthrough

Main.axml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_>

    <TabHost android:id="@+id/tabhost_sample"
        android:layout_
        android:layout_>

        <TabWidget android:id="@android:id/tabs"
            android:layout_
            android:layout_/>

        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_
            android:layout_
            android:padding="5dp">

            <LinearLayout android:id="@+id/tab_sampletab1"
                  android:layout_
                  android:layout_
            />

            <LinearLayout android:id="@+id/tab_sampletab2"
                android:layout_
                android:layout_
            />

        </FrameLayout>
     </TabHost>

</RelativeLayout>

MainActivity.cs:

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity

    protected override void OnCreate(Bundle savedInstanceState)
    
        base.OnCreate(savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);

        TabHost tabHost = FindViewById(Resource.Id.tabhost_sample) as TabHost;
        tabHost.Setup();

        TabHost.TabSpec tabSpec1 = tabHost.NewTabSpec("SampleTab1");
        tabSpec1.SetContent(Resource.Id.tab_sampletab1);
        tabSpec1.SetIndicator("SampleTab1");

        TabHost.TabSpec tabSpec2 = tabHost.NewTabSpec("SampleTab2");
        tabSpec2.SetContent(Resource.Id.tab_sampletab2);
        tabSpec2.SetIndicator("SampleTab2");

        tabHost.AddTab(tabSpec1);
        tabHost.AddTab(tabSpec2);
    

【讨论】:

以上是关于使用 tabhost 中的每个选项卡设置 axml 布局:Xamarin Android的主要内容,如果未能解决你的问题,请参考以下文章

android中的tabHost怎样在点击一个选项卡后跳转到一个activity,点击另一个选项卡跳转到另一个activity?

当我单击 Eclipse 中的按钮时,使用 tabHost 并转到特定选项卡

android之TabWidget选项卡

在 tabhost 中重新加载一个活动

当我在eclipse中单击按钮时,使用tabHost并转到特定选项卡

FragmentTabHostBottomDemoFragmentTabHost + Fragment实现底部选项卡