我有一个关于Android的问题。我是Android的新手,并尝试使用标签作为主要导航元素制作一个小应用程序。好吧,我不是100%确定如何使用标签正确。也许你可以在那里指导我。
据我所知,基本上有两种不同的选择。我可以在操作栏中使用制表符,也可以使用TabHost。在我看来,前者是正确的方法。这里有什么优点和缺点?
如果我使用操作栏中的标签,建议不要超过3个标签。如果我需要更多导航选项(因为我知道它不像iOS标签,你有“...”选项),该怎么办?
我应该使用不同类型的导航元素吗? (我想在我的情况下,我将有4个“标签”)
提前致谢!
答案 0 :(得分:3)
行动吧绝对是最佳选择。 TabHost已被弃用,Google更倾向于选择Action栏,因为它真的符合ICS之后的设计理念。
您可以使用ActionBarSherlock支持2.1(Eclair)之后的所有Android版本。
以下是一些帮助您入门的教程:
视频教程:
答案 1 :(得分:1)
尝试这样的事情:
Activity sampleActivity = (Activity) View.getContext();
ActionBar actionBar = sampleActivity.getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Tab tab = actionBar.newTab();
tab.setText("This is the name of the tab");
actionBar.addTab(tab, true);
答案 2 :(得分:0)
使用此示例解决他/她的问题
Tab
的主要xml文件<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"
android:padding="5dp">
<TabWidget`enter code here`
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"
android:padding="5dp" />
</LinearLayout>
java文件
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
Resources ressources = getResources();
TabHost tabHost = getTabHost();
Intent intentAndroid = new Intent().setClass(this,FirstClass.class);
TabSpec tab1 = tabHost
.newTabSpec("Android")
.setIndicator("",ressources.getDrawable(R.drawable.icon_android_config))
.setContent(intentAndroid);
Intent intentAndroid2 = new Intent().setClass(this,FirstClass.class);
TabSpec tab2 = tabHost
.newTabSpec("Android")
.setIndicator("",ressources.getDrawable(R.drawable.icon))
.setContent(intentAndroid2);
tabHost.addTab(tab1);
tabHost.addTab(tab2);
tabHost.setCurrentTab(0);
}
答案 3 :(得分:0)
public int getCount() {
// Show 3 total pages.
return 5;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Items";
case 1:
return "Food";
case 2:
return "Drink";
case 3:
return "soft";
case 4:
return "warm";
}
return null;
}
}