2012-03-14 12 views
5

シャーロックアクションバーでは、すばらしいインターフェイスを作成しました。ランドスケープモードでは、listfragmentと "detailsfragment"の両方が表示されます。フラグメント内のペインジインジケータを表示

今、私はA detailsframe内viewpageindicator(https://github.com/JakeWharton/Android-ViewPagerIndicator)を追加するので、私は次のようになりたいと思います:

--------------------------| 
|_1___|TAB1 | TAB2 | ETC | 
|_2___|-------------------| 
|_3___|Example: content | 
|_4___| TAB1 of listitem 1| 
|_5___|___________________| 

私は、これは明らかであると思います。ですから、基本的には、フラグメント内にFragmentManager/TabPageIndicatorがあります。

これは可能ですか?私は

はありがとう.. :(それを把握することはできません!

+0

左にListViewFragmentがありますか? 各ListView Itemは、次のものを含む別のRHS Fragmentをロードします:TabPageIndicatorとViewPager? –

答えて

6

Fragmentの中にFragmentを入れないでください。しかし、フラグメント内にViewPagerを入れて、探している結果を得ることができます。

私のアプリの1つ前の問題と同じ問題に直面していました(ViewPagerにはListViewが含まれていました)。私は、次の手順でこれを達成

Example ViewPager inside a Fragment

;これは、最終的な結果(赤Fragmentが含まれ、ViewPagerIndicator青、ViewPager緑色の線を参照)でした。拳は、細部フラグメントのために、私は次のXMLファイルを作成:次に

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <com.viewpagerindicator.TabPageIndicator 
     android:id="@+id/viewpagerIndicator" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" /> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

</LinearLayout> 

を、私はViewPagerとTabPageIndicatorを移入するためのカスタムPagerAdapterを設定します。

public class MainPagerAdapter extends PagerAdapter implements TitleProvider { 

    // constructor 
    ...   

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     // remove the object (we don't want to keep it in memory as it will get recreated and cached when needed) 

     ViewPager viewPager = (ViewPager) container; 
     View view = (View) object; 
     viewPager.removeView(view); 
    } 

    @Override 
    public Object instantiateItem(View pager, final int position) { 
     // inflate your 'content'-views here (in my case I added a listview here) 
     // similar to a listadapter's `getView()`-method 

     View wrapper = ... // inflate your layout 
     ... // fill your data to the appropriate views 

     ((ViewPager) pager).addView(wrapper); 
    } 

    public String getTitle(int position) { 
     ... // return the title of the tab 
    } 
} 

次へ]を、私のフラグメントに次のように設定しました:

public class MainFragment extends Fragment { 

    private MainPagerAdapter pagerAdapter; 
    private TabPageIndicator mIndicator; 
    private ViewPager viewPager; 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     View detailsFrame = context.findViewById(R.id.details_fragment); 
     // setup your adapter: pass data, etc. 
     this.pagerAdapter = new MainPagerAdapter(...); 
     this.viewPager = (ViewPager) context.findViewById(R.id.viewpager); 
     viewPager.setAdapter(pagerAdapter); 

     this.mIndicator = (TabPageIndicator) context.findViewById(R.id.viewpagerIndicator); 
     this.mIndicator.setViewPager(viewPager); 
    } 
} 
+1

優れた答え! –

+0

こんにちは、完全なコードを提供してください..私はいくつかの点を事前に感謝することができません – VENKI

+0

@Reinier、これは何ですかView detailsFrame = context.findViewById(R.id.details_fragment);それは何を表していますか?どのレイアウトでは、それは置かれているのですか? –

0

をあなたが断片内部の巣フラグメントすることはできません。あなたがそれらのいくつかを置き換えることになるでしょうときには罰金が表示されますが、それはクラッシュします。

:トランザクションを使用して

は、ルックこれらを持っています

+0

ありがとう、私はちょうどリストビューを削除する必要があります.. – user1255553

関連する問題