3

之間的變化我有一個導航抽屜和content_frame內的ViewPagerIndicator。我想在導航抽屜的片段之間切換,但問題是在標籤ViewPager之間切換的作品,但當我切換到另一個選項,你必須刪除ViewPager並把一個新的片段放在這個片段下ViewPager片段導航抽屜viewpagerindicator

附加照片,所以你可以看到。

1)在這裏,你已經可以看到下面ViewPager.It新片段可以通過顯示的文本區分開來是Prueba

enter image description here

附代碼

activity_main.xml中

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android"  
android:id="@+id/drawer_layout" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<FrameLayout   
    android:id="@+id/content_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:id="@+id/content_linear" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <com.viewpagerindicator.TabPageIndicator 
      android:id="@+id/indicator" 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent"/> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/pager" 
      android:layout_width="fill_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1"/> 
    </LinearLayout> 

</FrameLayout> 

<ListView 
android:id="@+id/left_drawer" 
android:layout_width="240dp" 
android:layout_height="match_parent" 
android:layout_gravity="start" 
android:choiceMode="singleChoice" 
android:divider="@android:color/transparent" 
android:dividerHeight="0dp" 
android:background="#111"/> 

在片段之間切換的方法。

/** Main content by replacing fragments 
* @param position 
*/ 
private void selectItem(int position) { 
    //Code 
    Fragment fragment = new TryFragment(); 
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 

    switch (position) { 
    case 0: 
     mPager.setCurrentItem(0); 
     break; 

    case 1: 
     mPager.setCurrentItem(1); 
     break; 

    case 2: 

     ft.replace(R.id.content_frame, fragment); 

     break; 

    }   
    ft.commit(); 
    mAdapter.notifyDataSetChanged(); 
    //Close drawer 
    mDrawerLayout.closeDrawer(mDrawerList); 
} 

類TryFragment

class TryFragment extends Fragment 
{ 
    public static final String ARG_PLANET_NUMBER = "planet_number"; 

    public TryFragment() 
    { 
     // Empty constructor required for fragment subclasses 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
      TextView text = new TextView(getActivity()); 
      text.setGravity(Gravity.CENTER); 
      text.setText("Prueba"); 
      text.setTextSize(20 * getResources().getDisplayMetrics().density); 
      text.setPadding(20, 20, 20, 20); 

      LinearLayout layout = new LinearLayout(getActivity()); 
      layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
      layout.setGravity(Gravity.CENTER); 
      layout.addView(text); 

      Log.d("TestFragment", "Estoy en el fragment"); 

      return layout; 
    } 
} 

我不知道如果我要摧毀viewpager以顯示新的片段或層級中的XML的一個問題。

回答

1

你的ViewPager必須是Fragment,它應該放置在layout.content_frame中,所以當你調用ft.replace(R.id.content_frame,fragment);您的ViewPager片段將被替換。

+0

我不瞭解你。 – TeRRo

+0

據我所知,您需要替換ViewPager時,從導航抽屜選擇另一個項目。因此,您需要將ViewPager分開,並在需要時將其分配給contant_frame。 –

+0

我有3個選項,第一個和第二個標籤是ViewPager,第三個是我必須刪除ViewPager顯示該片段。 – TeRRo

0

您不應該同時使用ViewPager和NavigationDrawer。你可以看到羅馬Nurik在這個G +後回答: https://plus.google.com/u/1/+DavidTaSmoochibi/posts/8dWEkFcbTFX

「你不應該使用與操作欄中的標籤導航抽屜如果你瞄準了類似的UI谷歌Play音樂,你應該實現標籤(並且要小心平板電腦的外觀 - 您不希望在平板電腦上使用全寬標籤欄)另外,請務必查看今年Google I/O的Android App Design會話中的結構,通過可用於公開應用層次結構的各種接口模式。「

+0

問題是,如果我使用操作欄選項卡顯示在選項卡上,這顯示在選項卡下面。唯一沒有發生在我身上的事情是ViewPager。 – TeRRo