2011-06-01 59 views
12

Quiero mostrar pestañas en mi solicitud, pero por defecto en Android entre las pestañas hay línea divisoria como estoCambiar el color pestaña en segundo plano y quitar la línea divisoria entre las pestañas

      Tab1 | Tab2 | Tab3 | 

pero quiero mostrar pestañas como este

      Tab1 Tab2 Tab3 

Por lo tanto, quiero eliminar la línea divisoria entre dos pestañas y también, por defecto, el color de fondo de las pestañas es de color gris. así que quiero cambiar esto en color negro.

Indique cómo eliminar la línea divisora ​​entre dos pestañas y cambie el color de fondo de las pestañas.

Gracias de antemano.

saludo.

Respuesta

10

Utilice este método y diseño para usar su propio diseño para la pestaña. Para eliminar el divisor, simplemente reemplace el gráfico de fondo 9patch con el suyo.

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> 

Uso (dentro de su 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

gracias por dar respuesta y también quiero para eliminar la línea divisoria entre las dos pestañas. por favor dígame cómo quitar la línea divisora ​​entre dos pestañas – Ramakrishna

+0

es posible establecer el ancho y alto de pestañas programáticamente así que intente expandir el ancho y luego puede obtenerlo ... – Lavanya

+0

Simplemente use un gráfico de fondo que no tenga un divisor línea en él. – Mannaz

61

Uso:

tabHost.getTabWidget().setDividerDrawable(null); 

para eliminar las líneas divisorias.

+0

líneas se eliminan, pero ¿qué pasa con el espacio entre las pestañas? – MobileEvangelist

+0

muchas gracias :) – Nevaeh

24

Tuve el problema en ICS, donde el divisor era visible. Ninguna de las soluciones funcionó excepto por lo siguiente.

<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> 

línea clave era android:showDividers="none"

+0

Esta es la respuesta correcta de todos modos ... – erikaD

Cuestiones relacionadas