【问题标题】:can anyone give sample code for TabHost in Android?任何人都可以在 Android 中提供 TabHost 的示例代码吗?
【发布时间】:2010-10-31 13:17:58
【问题描述】:

我需要示例代码来在 android 中创建 TabHost。 谁能帮帮我。

【问题讨论】:

标签: android android-tabhost


【解决方案1】:

Android 开发者网站有一个出色的完整代码示例,用于使用 TabWidgetTabHost 在 Android 中创建选项卡。

查看Hello, TabWidget

【讨论】:

  • 是什么让我对他们的例子发疯?他们不包含所有必要的信息。取行'mTabHost = getTabHost();'例如 - 没有事先提及或描述“mTabHost”。而且,他们的另一个选项卡示例有阻止它编译的错字。而且,当它被编译时,它会“核心转储”。
【解决方案2】:

我已经完成了关于显示分数的 tabhost 相关代码

    TabHost host = getTabHost();
    host.setup ();

    TabSpec allScoresTab = host.newTabSpec("allTab");
    allScoresTab.setIndicator(getResources().getString(R.string.all_scores), getResources().getDrawable(android.R.drawable.star_on));
    allScoresTab.setContent(R.id.ScrollViewAllScores);
    host.addTab(allScoresTab);

    TabSpec friendScoresTab = host.newTabSpec("friendsTab");
    friendScoresTab.setIndicator(getResources().getString(R.string.friends_scores), getResources().getDrawable(android.R.drawable.star_on));
    friendScoresTab.setContent(R.id.ScrollViewFriendScores);
    host.addTab(friendScoresTab);

    host.setCurrentTabByTag("allTab");

我的 xml 包含:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bkgrnd">
    <RelativeLayout
        android:id="@+id/RelativeLayout01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <ImageView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/ImageView_Header"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/quizicon"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true">
        </ImageView>
        <TextView
            android:id="@+id/TextView01"
            android:layout_height="wrap_content"
            android:text="@string/scores"
            android:textSize="@dimen/screen_title_size"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="10"
            android:layout_width="wrap_content"
            android:layout_gravity="fill_horizontal|center"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:shadowColor="@android:color/white"
            android:textColor="@color/title_color">
        </TextView>
        <ImageView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/ImageView_Header2"
            android:layout_height="wrap_content"
            android:src="@drawable/quizicon"
            android:layout_gravity="right|center_vertical"
            android:layout_width="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true">
        </ImageView>
    </RelativeLayout>
   <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <ScrollView android:id="@+id/ScrollViewAllScores" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="vertical">
  <TableLayout android:id="@+id/TableLayout_AllScores" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="*" /> 
  </ScrollView>
- <ScrollView android:id="@+id/ScrollViewFriendScores" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scrollbars="vertical">
  <TableLayout android:id="@+id/TableLayout_FriendScores" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="*" /> 
  </ScrollView>
        </FrameLayout>
    </LinearLayout>
</TabHost>
</LinearLayout>

【讨论】:

    【解决方案3】:

    activity_main.xml 包含

    <?xml version="1.0" encoding="utf-8"?>
    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
    
            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_above="@+id/scroll" />
    
            <HorizontalScrollView
                android:id="@+id/scroll"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scrollbars="none"
                android:layout_alignParentBottom="true" >
    
                <TabWidget
                    android:id="@android:id/tabs"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@drawable/tabs_bg" />
            </HorizontalScrollView>
        </RelativeLayout>
    
    </TabHost>
    

    而java代码是

    TabHost tabHost = getTabHost();
    
            TabSpec spec;
    
            Intent intent;
    
            //Home Tab
            View view1 = LayoutInflater.from(MainActivity.this).inflate(R.layout.home, null);
    
            intent = new Intent(MainActivity.this, Firstclass.class);
    
            spec = tabHost.newTabSpec("HOME").setIndicator(view1)
                    .setContent(intent);
    
            tabHost.addTab(spec);
    
            //Calendar Tab
            View view2 = LayoutInflater.from(MainActivity.this).inflate(R.layout.calendar_tab, null);
    
            intent = new Intent(MainActivity.this, Calendar.class);
    
            spec = tabHost.newTabSpec("CALENDAR").setIndicator(view2)
                    .setContent(intent);
    
            tabHost.addTab(spec);
    

    【讨论】:

      【解决方案4】:

      res/layout/activity_main.xml

      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      tools:context=".MainActivity">
      
      <TabHost
          android:id="@+id/tabHost"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_alignParentTop="true"
          android:layout_centerHorizontal="true">
      
          <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">
      
              <TabWidget
                  android:id="@android:id/tabs"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"></TabWidget>
      
              <FrameLayout
                  android:id="@android:id/tabcontent"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent">
      
                  <LinearLayout
                      android:id="@+id/tab1"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:background="#ffc916"
                      android:orientation="vertical">
      
                      <TextView
                          android:layout_width="match_parent"
                          android:layout_height="match_parent"
                          android:text="This is tab 1" />
      
                  </LinearLayout>
      
                  <LinearLayout
                      android:id="@+id/tab2"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:background="#da8200"
                      android:orientation="vertical">
      
                      <TextView
                          android:layout_width="match_parent"
                          android:layout_height="match_parent"
                          android:text="This is tab 2" />
                  </LinearLayout>
      
                  <LinearLayout
                      android:id="@+id/tab3"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:background="#5b89ff"
                      android:orientation="vertical">
      
                      <TextView
                          android:layout_width="match_parent"
                          android:layout_height="match_parent"
                          android:text="This is tab 3" />
                  </LinearLayout>
              </FrameLayout>
          </LinearLayout>
      </TabHost>
      

      src/MainActivity.java

        public class MainActivity extends AppCompatActivity {
      TabHost tabHost;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
      
          TabHost host = (TabHost)findViewById(R.id.tabHost);
          host.setup();
      
          //Tab 1
          TabHost.TabSpec spec = host.newTabSpec("Tab One");
          spec.setContent(R.id.tab1);
          spec.setIndicator("Tab One");
          host.addTab(spec);
      
          //Tab 2
          spec = host.newTabSpec("Tab Two");
          spec.setContent(R.id.tab2);
          spec.setIndicator("Tab Two");
          host.addTab(spec);
      
          //Tab 3
          spec = host.newTabSpec("Tab Three");
          spec.setContent(R.id.tab3);
          spec.setIndicator("Tab Three");
          host.addTab(spec);
      }
      
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.menu_main, menu);
          return true;
      }
      
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          // Handle action bar item clicks here. The action bar will
          // automatically handle clicks on the Home/Up button, so long
          // as you specify a parent activity in AndroidManifest.xml.
          int id = item.getItemId();
      
          //noinspection SimplifiableIfStatement
          if (id == R.id.action_settings) {
              return true;
          }
      
          return super.onOptionsItemSelected(item);
      }
      } 
      

      您可以按照这些教程寻求帮​​助

      Creating a tabbed UI with TabHost

      Android Tab Layout Tutorial

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多