2011-06-01 194 views
12

我想表明我的应用程序标签之间,但默认情况下,在标签之间的android分隔线有分隔线这样更改标签的背景颜色和删除选项卡

      Tab1 | Tab2 | Tab3 | 

但我想显示的标签这样

      Tab1 Tab2 Tab3 

所以我想删除两个标签之间的分隔线,默认情况下标签背景颜色是灰色。所以我想把它改成黑色。

请告诉如何删除两个标签之间的分隔线,并更改标签的背景颜色。

在此先感谢。

最好的问候。

回答

10

使用此方法和布局来为选项卡使用您自己的布局。要移除分隔线,只需用自己的背景替换背景9patch图形。

public static View prepareTabView(Context context, String text, Drawable background) { 
    View view = LayoutInflater.from(context).inflate(R.layout.fake_native_tab, null); 
    TextView tv = (TextView) view.findViewById(R.id.fakeNativeTabTextView); 
    tv.setText(text); 
    view.setBackgroundDrawable(background); 
    return view; 
} 

fake_native_tab.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/fakeNativeTabLayout" android:layout_width="wrap_content" 
android:layout_height="wrap_content" android:gravity="center" 
android:orientation="vertical" android:background="@drawable/default_tab_background"> 
<!-- 
     You can even define an Icon here (dont forget to set a custom icon in your code for each Tab): 
    <ImageView android:id="@+id/fakeNativeTabImageView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:src="@drawable/icon" /> 
--> 
    <TextView android:id="@+id/fakeNativeTabTextView" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:textColor="@color/tab_text_color" android:textSize="@dimen/text_size_tiny" 
    android:text="Tab" android:ellipsize="marquee" /> 

</LinearLayout> 

使用(你TabActivity内):

/* Create Tabs */ 
// reusable Tab Spec 
TabHost.TabSpec spec; 
Intent tabIntent; 
tabHost = getTabHost(); 
Resources res = getResources(); 

// Tab 1: 
tabIntent = new Intent().setClass(this, Favorite.class); 
    spec = tabHost.newTabSpec(TAB_SOMETAB).setIndicator(
      prepareTabView(this, (String) getText(R.string.tab_favorite), res 
        .getDrawable(R.drawable.tab_favorite_background), 0)).setContent(tabIntent); 
tabHost.addTab(spec); 



// Tab 2: 
tabIntent = new Intent().setClass(this, History.class); 
spec = tabHost.newTabSpec(TAB_SOMEOTHERTAB).setIndicator(
      prepareTabView(this, (String) getText(R.string.tab_history), res 
        .getDrawable(R.drawable.tab_favorite_background), 0)).setContent(tabIntent); 
tabHost.addTab(spec); 
+0

感谢给答复,我也想删除分隔线在两个标签之间。请告诉我如何删除两个标签之间的分隔线 – Ramakrishna 2011-06-01 08:04:11

+0

它可以通过编程方式设置标签的宽度和高度,所以尝试扩大宽度,然后你可以得到它... – Lavanya 2011-06-01 08:06:09

+0

只需使用没有分隔线的背景图形在它的线。 – Mannaz 2011-06-01 08:06:51

61

用途:

tabHost.getTabWidget().setDividerDrawable(null); 

删除分隔线。

+0

行被删除,但标签之间的间距是多少? – MobileEvangelist 2013-01-15 09:20:01

+0

感谢一吨:) – Nevaeh 2015-03-30 12:31:18

24

我在ICS中出现了问题,分隔符是可见的。除了以下内容,没有任何解决方案可行。

<TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="60dp" 
      android:gravity="bottom" 
      android:layout_alignParentBottom="true" 
      android:fadingEdge="none" 
      android:showDividers="none" > 
     </TabWidget> 

重点线为android:showDividers="none"

+0

无论如何这是正确的答案... – erikaD 2013-06-27 14:10:02