2013-10-24 3 views
0

У меня есть активность, корневая компоновка которой представляет собой макет ящика, при этом основной контент представляет собой просмотрщик (и com.astuetz.viewpager.extensions.PagerSlidingTabStrip, чтобы помочь viewpager. когда конкретный элемент выбран в панели навигации, вид пейджера (наряду с полосой названия вкладок) заменяется одним фрагментом Моя деятельность файл макета заключается в следующем:.Swapping ViewPager с одним фрагментом

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


    <RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <com.astuetz.viewpager.extensions.PagerSlidingTabStrip 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="48dip" 
      android:background="@drawable/background_tab" 
      app:underlineColor="#E67E22" 
      app:indicatorColor="#E67E22" /> 

     <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/pager" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/tabs" 
      tools:context=".UserActivity" > 
     </android.support.v4.view.ViewPager> 


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

    </RelativeLayout> 

    <ListView android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="#666" 
     android:background="#E8E8E8" 
     /> 
</android.support.v4.widget.DrawerLayout> 

Теперь это то, что я пытаюсь для замены пейджера представления фрагментом. Я не уверен в этом сам, немного запутался, какой элемент применить метод замены.

UserProfileActivity userProfileFragment = new UserProfileActivity(); 
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
transaction.replace(R.id.fragmentToSwap, userProfileFragment); 
transaction.addToBackStack(null); 
transaction.commit(); 

Что происходит сейчас, так это то, что новые элементы фрагмента перекрывают пейджер представления, в то время как я все еще могу использовать пейджер представления в фоновом режиме. Пожалуйста, помогите мне разобраться.

ответ

2

Фрагмент перекрывает ViewPager, потому что все они находятся в RelativeLayout вместе - если вы хотите скрыть ViewPager и полосу вкладок, вы можете вызвать setVisibility (View.GONE) для каждого из них, чтобы скрыть их из вида.

// assuming you do not already have a reference to them, 
// find them by their ID and hide them 
findViewById(R.id.tabs).setVisibility(View.GONE); 
findViewById(R.id.pager).setVisibility(View.GONE); 

Edit: На самом деле, вы могли бы поместить ViewPager и вкладок в виде фрагмента своей собственной, и прикрепить это к fragmentToSwap FrameLayout так, что ваша сделка фрагмент будет на самом деле сделать замену - в зависимости от того, как ваше приложение которые могут иметь больший смысл.

+0

это видимость предмет произведение! : D Хотя, как вы сказали, ваша вторая идея имеет для меня больше смысла. Я попробую, когда я получу время и дам вам знать, как это происходит. (я отвечу на ваш ответ после того, как я попробую: P) – gitter

+1

И это сработало: D Спасибо – gitter

Смежные вопросы