我已经看过Stack Overflow的帖子和其他网站上的教程,我无法理解如何使用TabHost
。有人可以给我解释,也可以给我一个链接到教程?我该如何使用tabHost for Android
回答
在ManiActivity延伸TabActivity
public class MainActivity extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); TabHost mTabHost = getTabHost(); mTabHost.addTab(mTabHost.newTabSpec("first").setIndicator("First").setContent(new Intent(this ,FirstActivity.class))); mTabHost.addTab(mTabHost.newTabSpec("second").setIndicator("Second").setContent(new Intent(this , SecondActivity.class))); mTabHost.setCurrentTab(0); } }
在此交流tivity不使用布局“activity_main.xml”。
Tabhost mTabHost = getTabHost();是创建主选项卡。
mTabHost.newTabSpec(“first”)是创建tabspec id“first”。
setIndicator(“First”)在标题标签中创建文本“First”。
setContent(新意图(这一点,FirstActivity.class))是FirstActivity.class(FirstActivity.java)使用的内容
mTabHost.addTab(....)是添加spectab主标签
mTabHost.setCurrentTab(0)是起始页面时的折痕标签。
FirstActivity.java
public class FirstActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
}
}
SecondActivity.java
public class SecondActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
}
}
“R.layout.first_layout” 是从first_layout.xml内容
“R.layout.second_layout” 是从second_layout.xml
在AndroidManifest.xml在示例XML添加活动名称 “.FirstActivity” 和 “.SecondActivity” 的内容。
完成!!!!!而所有的TabHost
标签不显示...为什么? – guiomie 2013-10-05 20:37:25
getTabHost()对我不起作用。它不作为资源导入。 – Eenvincible 2014-02-15 20:06:01
@Eenvincible你应该有你的活动扩展TabActivity – Jimmar 2014-07-18 15:51:40
首先不会被弃用,TabActivity
在另一方面已被弃用由于Fragment
API。
有两种方法可以使用TabHost;使用片段通过FragmentTabHost
和使用TabHost.TabContentFactory
。
1.使用片段通过FragmentTabHost
此示例代码展示了如何在活动中使用TabHost。
FragmentTabHostActivity.java
public class FragmentTabHostActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_tab_host_activity);
FragmentTabHost fragmentTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
fragmentTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);
fragmentTabHost.addTab(getTabSpec1(fragmentTabHost), Tab1Fragment.class, null);
fragmentTabHost.addTab(getTabSpec2(fragmentTabHost), Tab2Fragment.class, null);
}
private TabHost.TabSpec getTabSpec1(FragmentTabHost tabHost) {
return tabHost.newTabSpec("First Tab")
.setIndicator("Tab1");
}
private TabHost.TabSpec getTabSpec2(FragmentTabHost tabHost) {
return tabHost.newTabSpec("Second Tab")
.setIndicator("Tab 2");
}
}
fragment_tab_host_activity.xml
<android.support.v4.app.FragmentTabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<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"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
实际使用片段,您可以用Tab片段(Android docs)内。
2.使用TabHost.ContentFactory
TabHostActivity.java
public class TabHostActivity extends AppCompatActivity implements TabHost.TabContentFactory {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);
tabHost.setup();
tabHost.addTab(getTabSpec1(tabHost));
tabHost.addTab(getTabSpec2(tabHost));
}
private TabHost.TabSpec getTabSpec1(TabHost tabHost) {
return tabHost.newTabSpec("First Tab")
.setIndicator("Tab1")
.setContent(this);
}
private TabHost.TabSpec getTabSpec2(TabHost tabHost) {
return tabHost.newTabSpec("Second Tab")
.setIndicator("Tab 2")
.setContent(this);
}
@Override
public View createTabContent(String tag) {
return LayoutInflater.from(this).inflate(R.layout.activity_tab_1, null);
}
}
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">
<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"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</TabHost>
不过,我个人推荐使用最新Material Design style TabLayout
class。
- 1. 如何使用tabhost
- 2. 如何在android 6.0+下使用TabHost
- 3. Android:你如何设置TabHost
- 4. 如何使用Tablayout for Android?
- 5. 如果我在AJAX中使用.append,我该如何使用.each for div?
- 6. 我该如何使用ShowDialog?
- 7. Android TabHost
- 8. 如何更改我的TabHost?
- 9. Android:我应该何时使用singleInstance launchmode
- 10. 我应该使用OpenGL ES 1或2 for Android
- 11. 我该如何使用setTimeout?
- 12. 我应该使用IndexedDB for web-app吗?
- 13. 我应该如何使用map for v2的google api key?
- 14. 我该如何使用http.get for delphi xe2 ios firemonkey?
- 15. 我应该如何在for循环中使用JavaScript访问JSON?
- 16. 我该如何修剪.jar for cljsjs/react?
- 17. 我们应该使用android
- 18. 如何在Android中使用TabHost同步listview和mapview
- 19. Android的 - 我该如何使用FloatingLabel在Android Studio中
- 20. 我该如何使用android手机使用sqlite?
- 21. 我该如何在android
- 22. Android Tabhost刷新
- 23. 了Android tabhost
- 24. Android中的TabHost
- 25. 我该如何使用org.mockito.AdditionalMatchers.gt?
- 26. 我该如何使用cvReshape?
- 27. 我该如何使用index.html?
- 28. 我该如何使用XamlUIPresenter?
- 29. 我该如何使用SSDP?
- 30. 我该如何使用py2app?
TabHost已弃用,建议您改用Fragments。以下是关于片段的教程:http://www.vogella.com/articles/Android/article.html#fragments_tutorial如果您确实想使用TabHost,也许别人可以提供帮助。我没有太多的经验。祝你好运! – 2012-07-24 00:57:40
tabHosts和fragment之间真的存在关系吗? – 2014-07-19 06:45:24
@AndyHarris TabHost不被弃用。 TabActivity是。请停止传播虚假谣言。 – aldok 2017-05-13 04:22:32