2012-05-02 13 views
5

Come posso avere il mio pulsanti TAB a guardare come enter image description herecreare pulsanti personalizzati scheda

Quale sarebbe il modo più semplice per fare questo se ho un disegnabile in quella forma troppo ???

+1

Creazione di layout XML per selettori, ma essi non si adattano in modo corretto per le schede nativo –

+0

Avete una domanda specifica? Con quale parte dell'implementazione hai problemi? –

+0

in fondo, ho provato utilizzando il metodo tabspec.setindicator con drawable, ma che does'nt in forma in modo corretto con il layout, ho anche provato un layout XML personalizzato in quel metodo troppo, così ho voluto knw se ci fosse in qualsiasi altro modo potrei cambiare il look nativo delle schede –

risposta

3

semplicemente è possibile implementare schede per la tua domanda come questa

in metodo 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); 

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

chiamare la disegnabile a getResources() getDrawable (R.drawable.drawableid)).;

+1

ridimensionare il tuo drawables.go per Android assertare studio e generare icone di tabulazione usando i tuoi drawable.here è il link http: //android-ui-utils.googlecode. com/hg/patrimoniale-studio/dist/index.html pls non dimenticate di votare la mia risposta :) – Hassy31

1

Qualcosa che si potrebbe fare nella vostra attività:

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

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

ho fatto un lavoro simile come questo. Poiché Android non aiuta molto è la personalizzazione delle schede, faccio solo un pulsante con quattro schede e lo metto alla fine di ogni file xml. Tutte le tue attività sarebbero simili in questo modo e darebbero una visualizzazione come le schede.

+0

Potrebbe me u dare un esempio per questo? –

+0

Non credo ci sia bisogno di esempio poiché è molto semplice. Tutto quello che devi fare è aggiungere quattro pulsanti nella parte inferiore di ogni xml di attività e chiamare un'azione appropriata contro di loro. – MrWaqasAhmed

+1

Hai provato la mia soluzione qui sotto? –

Problemi correlati