2012-08-01 12 views
7

私のアプリケーションではSwipeyTabsを使用しています。私はどのようにタブのコンテンツを埋めるか分からない。それは独自のxmlを持っていません。Android:SwipeyTabsの記入方法

私はこのようなタブを使用しています:

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

そして、ここではactivity_swipey_tabs.xmlレイアウトです:

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

は、任意の例やチュートリアルはありますか?

すべてのサポートは素晴らしいでしょう。

+0

http://stackoverflow.com/questions/10912602/swipeytabs-how-to-create-swipey-tabs-using-actionbarsherlock-libraryこれをチェックしてください –

+2

これは私が探しているものですか?はいの場合、たとえばTextViewまたはsthelseのリスナーを設定するにはどうすればよいですか? Btwありがとう。 – Martin

答えて

6

タブのSwipeyTabsは仮想レイアウトと似ていますが、私は彼らが独自のレイアウトを定義していないことを意味します。すべてのコンポーネントを動的に定義する必要があります。

詳しく説明しましょう。たとえば、ListView(カスタム)が必要です。あなたはこのようなレイアウトを作成しました:

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

を今、あなたはこのカスタムListViewを適応させるための、あまりにもArrayAdapterを必要とする、私はArrayAdapter含めていませんよ。

PagerAdapterクラスでは、ListViewを定義し、このレイアウトを使用します。例:

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

これでうまくいきます。さらにタブが必要な場合はif(position == 0)のようにセパレータとしてpositionパラメータを使用してください。この場合、次の行が必要になります:

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

それだけです。私は、それは明らかです。

+0

ありがとう、それは働いて、今あなたが意味するものをつかんだ。 – Martin

関連する問題