如何让我的标签按钮看起来像
如果我的那个形状也有一个可绘制的,最简单的方法是什么?
答案 0 :(得分:3)
您可以像这样
为应用程序实现标签 onCreate方法中的
TabHost tabHost = getTabHost();
tabHost.setCurrentTabByTag("First");
TabSpec firstTab = tabHost.newTabSpec("First");
firstTab.setIndicator("firstTab",getResources().getDrawable(R.drawable.ic_action_first)); //drawable 1
firstTab.setContent(R.id.first_content); //View
tabHost.addTab(firstTab);
TabSpec secondTab = tabHost.newTabSpec("Second");
secondTab.setIndicator("secondTab",getResources().getDrawable(R.drawable.ic_action_second)); //drawable 2
secondTab.setContent(R.id.second_content); //View
tabHost.addTab(secondTab);
TabSpec thirdTab = tabHost.newTabSpec("Third");
thirdTab.setIndicator("thirdTab",getResources().getDrawable(R.drawable.ic_action_third)); //drawable 3
thirdTab.setContent(R.id.third_content); //View
tabHost.addTab(thirdTab);
tabHost.setCurrentTab(0);
在xml文件中
<TabHost android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost">
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical">
<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="wrap_content" android:layout_height="wrap_content" >
<LinearLayout android:id="@+id/first_content" android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView android:text="first_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:id="@+id/second_content" android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView android:text="second_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout android:id="@+id/third_content" android:layout_width="fill_parent" android:layout_height="fill_parent">
<TextView android:text="third_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
在getResources()调用你的drawable.getDrawable(R.drawable.drawableid));
答案 1 :(得分:1)
您可以在活动中做的事情:
private TabHost mTabHost ;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mTabHost.setup();
// We create a webview for one tab for example
WebView wv = new WebView(this);
// add url and options on this webview
setupTab(wv, "My Title");
}
private void setupTab(final View view, final String tag) {
View tabview = createTabView(mTabHost.getContext(), tag);
TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabContentFactory() {
public View createTabContent(String tag) {return view;}
});
mTabHost.addTab(setContent);
}
// this is the method for customize tabs
private static View createTabView(final Context context, final String text) {
View view = LayoutInflater.from(context).inflate(R.layout.layout_tabwidget_custom, null);
TextView tv = (TextView) view.findViewById(R.id.tabsText);
tv.setText(text);
return view;
}
在R.layout.layout_tabwidget_custom中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabsLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/selector_tab_bg"
android:gravity="center"
android:orientation="vertical"
android:padding="10dip" >
<TextView
android:id="@+id/tabsText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title"
android:textColor="@drawable/selector_tab_text"
android:textSize="15dip" />
</LinearLayout>
答案 2 :(得分:0)
我做过类似的工作。由于Android对自定义标签没有多大帮助,我只需制作四个标签按钮并将其放在每个xml文件的末尾。所有的活动都会以这种方式看起来相似,它会提供像Tabs这样的视图。