2011-06-01 152 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

相關問題