2012-08-01 15 views
7

Sto usando SwipeyTabs nella mia applicazione. Non sono sicuro di come riempire i contenuti delle schede. Non ha nemmeno un proprio xml.Android: come compilare SwipeyTabs?

sto usando le schede in questo modo:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_swipey_tabs); 
    initViewPager(4, 0xFFFFFFFF, 0xFF000000); 
    mSwipeyTabs = (SwipeyTabsView) findViewById(R.id.swipey_tabs); 
    mSwipeyTabsAdapter = new SwipeyTabsAdapter(this); 
    mSwipeyTabs.setAdapter(mSwipeyTabsAdapter); 
    mSwipeyTabs.setViewPager(mPager); 
} 

private void initViewPager(int pageCount, int backgroundColor, int textColor) { 
    mPager = (ViewPager) findViewById(R.id.pager); 
    mPagerAdapter = new ExamplePagerAdapter(this, pageCount, backgroundColor, textColor); 
    mPager.setAdapter(mPagerAdapter); 
    mPager.setCurrentItem(1); 
    mPager.setPageMargin(1); 
} 

E qui è activity_swipey_tabs.xml disposizione:

<android.ex.com.viewpager.extension.SwipeyTabsView 
    android:id="@+id/swipey_tabs" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#3B3B3B" /> 

<View 
    android:id="@+id/colorline" 
    android:layout_width="fill_parent" 
    android:layout_height="2dip" 
    android:layout_below="@+id/swipey_tabs" 
    android:background="#FF91A438" /> 

<View 
    android:id="@+id/blackline" 
    android:layout_width="fill_parent" 
    android:layout_height="1dip" 
    android:layout_below="@+id/colorline" 
    android:background="#FF000000" /> 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/blackline" /> 

Ci sono esempi o tutorial?

Qualsiasi supporto sarebbe fantastico.

+0

http://stackoverflow.com/questions/10912602/swipeytabs-how-to-create-swipey-tabs-using-actionbarsherlock-library verifica questo –

+2

Sei sicuro che questo sia quello che sto cercando? Se sì, per esempio come posso impostare qualsiasi ascoltatore di TextView o di Sthelse? Grazie. – Martin

risposta

6

Le schede di SwipeyTabs sono come un layout virtuale, ovvero non hanno un layout definito. Dovresti definire ogni componente in modo dinamico.

Lasciatemi spiegare con i dettagli. Ad esempio, è necessario un ListView (personalizzato). Hai creato il layout in questo modo:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="70dp" 
    android:padding="5dp" 
    android:background="#ffffff" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="80dp" 
     android:layout_height="60dp" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:src="@drawable/i1" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/imageView1" 
     android:layout_alignParentRight="true" 
     android:textColor="@android:color/black" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignRight="@+id/textView2" 
     android:layout_alignTop="@+id/imageView1" 
     android:textColor="@android:color/black" /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/imageView1" 
     android:layout_toRightOf="@+id/imageView1" 
     android:textColor="@android:color/black" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

</RelativeLayout> 

Ora avete bisogno di un ArrayAdapter troppo per adeguare la presente personalizzati ListView, non sto compreso ArrayAdapter.

Quindi nella classe PagerAdapter, definire un ListView e utilizzare questo layout. Nell'esempio:

@Override 
public Object instantiateItem(View container, int position) { 
    ListView v = new ListView(mContext); 
    //test_list_layout which is above 
    TestAdapter adapter = new TestAdapter(mContext, R.layout.test_list_layout, objs); 

    v.setAdapter(adapter); 
    ((ViewPager)container).addView(v, 0); 
    v.setSelection(scrollPosition[ position ]); 
    v.setOnScrollListener(new OnScrollListener() {    
     public void onScrollStateChanged(AbsListView view, int scrollState){} 
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
     scrollPosition[ pos ] = firstVisibleItem; 
     } 
    }); 
    return v; 
} 

Ora funziona bene. Se hai bisogno di più schede, usa il parametro position come un separatore come if(position == 0). In questo hai bisogno di questa linea:

((ViewPager) container).removeView((View) container); 

Questo è tutto. Spero, sia chiaro.

+0

Grazie, ha funzionato e ora ho afferrato quello che volevi dire. – Martin

Problemi correlati