2016-07-14 13 views
1

我在刷卡標籤視圖。我想在SupportActionBar的底部顯示PagerTabStrip。所有選項卡內容都很好地顯示,但問題在於這些選項卡的標題沒有顯示,PagerTabStrip沒有顯示在SupportActionBar的底部。PagerTBStrip沒有顯示

main_tab.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="horizontal"> 


    <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="fill_parent" 
    android:layout_height="fill_parent" 
    tools:context=".MainActivity" > 

     <android.support.v4.view.PagerTabStrip 
      android:layout_width="wrap_content" 
      android:layout_height="100dp" 
      android:background="#e62117" 
      android:id="@+id/tab_strip" 
      android:focusableInTouchMode="false"> 
     </android.support.v4.view.PagerTabStrip> 

</android.support.v4.view.ViewPager> 
</LinearLayout> 

TAB1,TAB2,TAB3:類似

public class tab1 extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.tab1,container,false); 
return view; 
    } 
} 

ma_page_adapter:

public class ma_pager_adapter extends FragmentPagerAdapter { 
    public ma_pager_adapter(FragmentManager fm) { 
     super(fm); 
    } 


    @Override 
    public Fragment getItem(int i) { 

     switch (i) { 
      case 0: 
       tab1 t1 = new tab1(); 
       return t1; 
      case 1: 
       tab2 t2 = new tab2(); 
       return t2; 
      case 2: 
       tab3 t3 = new tab3(); 
       return t3; 

     } 
     return null; 
    } 

    @Override 
    public int getCount() { 
     return 3; 
    }//set the number of tabs 

    @Override 
    public CharSequence getPageTitle(int position) { 
     Locale l = Locale.getDefault(); 
     switch (position) { 
      case 0: 
       return "Top stories"; 
      case 1: 

       return "Members"; 
      case 2: 

       return "Setting"; 
     } 
     return null; 
    } 
} 

MainActivity:

ViewPager pager; 
    PagerTabStrip tab_strp; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_tab); 
     ma_pager_adapter mapager = new ma_pager_adapter(getSupportFragmentManager()); 


     pager = (ViewPager)findViewById(R.id.pager); 
     pager.setAdapter(mapager); 
//  tab_strp = (PagerTabStrip) findViewById(R.id.tab_strip); 
     ((ViewPager.LayoutParams) findViewById(R.id.tab_strip).getLayoutParams()).isDecor = true; 
//  tab_strp.setTextColor(Color.WHITE); 
    } 
} 

回答

0

tab1.onCreateView(...)方法刪除此行...

((ViewPager.LayoutParams) (view.findViewById(R.id.tab_strip)).getLayoutParams()).isDecor = true; 

...並把它添加到您的MainActivity.onCreate(...)方法。你的應用將停止崩潰。

tab1片段類有沒有R.id.tab_strip視圖的知識。這是MainActivity類的一個視圖。

+1

老兄,我看不到爲什麼你的應用程序崩潰了你粘貼在你的問題的代碼。請創建一個單獨的堆棧溢出問題,該問題顯示了崩潰的代碼和堆棧跟蹤,並且我們將其置於底部。 @ L.Liu的回答似乎表明,你的問題中的代碼很好,這可能是你在應用程序中做的其他事情導致它崩潰的原因。就像我說的那樣,創建一個單獨的問題,向我展示崩潰的堆棧軌跡,將鏈接發送給我,然後我們將進行調查。 –

+0

感謝兄弟。它的工作現在。 –

2

你的問題複製下面的問題:

PagerTabStrip not showing in ViewPager in app targeting Android 6.X (N)

對於應用定位的Android N,則需要使用以下解決方法:

在onCreateView(),添加以下內容:

((ViewPager.LayoutParams)(view.findViewById(R.id.tab_strip))。getLayoutParams())。isDecor = true;

+0

我在onCreate()中添加了這一行,但它給出了致命的錯誤。請告訴我如何準確地將此代碼添加到我的活動課程中。 –

+0

此Activity代碼給出了eroror .......... ViewPager pager; PagerTabStrip tab_strp; @Override 保護無效的onCreate(捆綁savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main_tab); ma_pager_adapter mapager = new ma_pager_adapter(getSupportFragmentManager()); pager =(ViewPager)findViewById(R.id.pager); PagerTabStrip tab_strp =(PagerTabStrip)findViewById(R.id.tab_strip); ((ViewPager.LayoutParams)tab_strp.getLayoutParams())。isDecor = true; pager.setAdapter(mapager); } –

+0

記住,我跑在Android 4.1.2這個程序。 –

2

我遇到你的代碼,它的運行normal.If要顯示它您的ViewPager底部,您可以使用「機器人:layout_gravity」,並設置其底部。

+0

我的標籤在我的工具欄後面...感謝您的線索。 – DroidT