2010-07-02 4 views
8

Android 2.2 d.h API Ebene 8 hat tabStripEnabled = "true" für TabWidget , wie diese in älteren Versionen von Android zu erreichen?tabStripEnabled für TabWidget in älteren API

+0

hatte ich den Tabs am unteren Rande des Bildschirms, Also tue ich es, wie unten ... Ich habe android: layout_marginBottom = "- 10dip" Bewegen des bottomStrip aus dem Bildschirm , wollen aber die genaue Art und Weise wissen, es zu tun ... Dank – amithgc

Antwort

8
private void SetupTabs(TabHost tabHost) { 

    LinearLayout ll = (LinearLayout) tabHost.getChildAt(0); 
    TabWidget tw = (TabWidget) ll.getChildAt(0); 

    Field mBottomLeftStrip; 
    Field mBottomRightStrip; 

    try { 
     mBottomLeftStrip = tw.getClass().getDeclaredField("mBottomLeftStrip"); 
     mBottomRightStrip = tw.getClass().getDeclaredField("mBottomRightStrip"); 

     if (!mBottomLeftStrip.isAccessible()) { 
      mBottomLeftStrip.setAccessible(true); 
     } 

     if (!mBottomRightStrip.isAccessible()) { 
      mBottomRightStrip.setAccessible(true); 
     } 

     mBottomLeftStrip.set(tw, getResources().getDrawable(R.drawable.blank)); 
     mBottomRightStrip.set(tw, getResources().getDrawable(R.drawable.blank));// blank is the name of the image in drawable folder 

    } 
    catch (java.lang.NoSuchFieldException e) { 
     // possibly 2.2 
     try { 
      Method stripEnabled = tw.getClass().getDeclaredMethod("setStripEnabled", boolean.class); 
      stripEnabled.invoke(tw, false); 

     } 
     catch (Exception e1) { 
      e1.printStackTrace(); 
     } 
    } 
    catch (Exception e) {} 
} 
+0

Vielen Dank!!!! – Eby

+0

Das hat bei mir nicht funktioniert. Ich habe es sowohl auf einem 2.1 und 2.2 Emulator versucht. Gibt es noch etwas, das ich bei der Verwendung dieses Hacks beachten sollte? Der Code wurde korrekt basierend auf dem aktuellen SDK ausgeführt, der untere Rand für das TabWidget blieb jedoch erhalten. – dannyroa

+1

Dies funktioniert perfekt, einige Dinge zu beachten, erstellen Sie ein transparentes Bild und nennen Sie es leer. Ich habe eine kleine Änderung vorgenommen, indem ich auskommentiert habe: LinearLayout ll = (LinearLayout) tabHost.getChildAt (0); TabWidget tw = (TabWidget) ll.getChildAt (0); und mit TabWidget tw = tabHost.getTabWidget ersetzt(); – Fred

0

ich es so gemacht:

try { 
     Method setStripEnabled = tabWidget.getClass().getDeclaredMethod(
       "setStripEnabled", boolean.class); 
     setStripEnabled.invoke(tabWidget, true); 

     Method setLeftStripDrawable = tabWidget.getClass() 
       .getDeclaredMethod("setLeftStripDrawable", int.class); 
     setLeftStripDrawable.invoke(tabWidget, R.drawable.tab_line); 

     Method setRightStripDrawable = tabWidget.getClass() 
       .getDeclaredMethod("setRightStripDrawable", int.class); 
     setRightStripDrawable.invoke(tabWidget, R.drawable.tab_line); 
    } catch (NoSuchMethodException e) { 
     e.printStackTrace(); 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } catch (InvocationTargetException e) { 
     e.printStackTrace(); 
    } 
Verwandte Themen