2012-08-01 41 views
7

Tôi đang sử dụng SwipeyTabs trong đơn đăng ký của mình. Tôi không chắc chắn cách điền nội dung tab. Nó thậm chí không có bất kỳ xml riêng.Android: Làm thế nào để điền vào SwipeyTabs?

Tôi đang sử dụng các tab như thế này:

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

Và đây là activity_swipey_tabs.xml bố trí:

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

Có những ví dụ hoặc hướng dẫn?

Mọi hỗ trợ sẽ tuyệt vời.

+0

http://stackoverflow.com/questions/10912602/swipeytabs-how-to-create-swipey-tabs-using-actionbarsherlock-library kiểm tra điều này –

+2

Bạn chắc chắn đây là những gì tôi đang tìm kiếm? Nếu có, ví dụ làm thế nào tôi có thể đặt bất kỳ TextView hoặc người nghe sthelse? Btw cảm ơn. – Martin

Trả lời

6

Tab của SwipeyTabs giống như bố cục ảo, có nghĩa là chúng không có bố cục được xác định riêng. Bạn nên định nghĩa mọi thành phần một cách linh hoạt.

Hãy để tôi giải thích chi tiết. Ví dụ, bạn cần một ListView (tùy chỉnh). Bạn đã tạo bố trí như thế này:

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

Bây giờ bạn cần một ArrayAdapter quá cho thích ứng tùy chỉnh này ListView, tôi không bao gồm ArrayAdapter.

Vì vậy, trong lớp PagerAdapter của bạn, hãy xác định ListView và sử dụng bố cục này. Ví dụ:

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

Hiện tại, nó hoạt động tốt. Nếu bạn cần nhiều tab hơn, hãy sử dụng tham số position làm người seperator như if(position == 0). Trong trường hợp này, bạn sẽ cần dòng này:

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

Đó là tất cả. Tôi hy vọng, nó rõ ràng.

+0

Cảm ơn bạn, nó đã hoạt động và bây giờ tôi nắm lấy những gì bạn muốn nói. – Martin

Các vấn đề liên quan