2016-08-22 140 views
0

我在某處讀過android studio中的選項卡式活動有一些不贊成的代碼。那麼,我應該使用它還是不?還有其他新方法可以實現嗎?Android Studio中的選項卡式活動

+0

見'TabLayout' –

+0

謝謝@ReazMurshed –

+0

見執行本文檔。 http://stackoverflow.com/documentation/android/124/material-design-for-all-android-versions/11500/tablayout#t=201608221113457391885 –

回答

0

你爲什麼不嘗試材料設計滑動標籤?它們提供更好的視圖和交互式用戶界面。

第1步:下載這兩個文件複製,因爲它是Android Studio中:

firstsecond

第2步:在color.xml設置的配色方案按照您的要求:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="ColorPrimary">#e62117</color> 
    <color name="ColorPrimaryDark">#c31c13</color> 
    <color name="tabsScrollColor">#8a140e</color> 

</resources> 

3步:創建toolbar.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:background="@color/ColorPrimary" 
    android:elevation="2dp" 
    android:theme="@style/Base.ThemeOverlay.AppCompat.Dark" 
    xmlns:android="http://schemas.android.com/apk/res/android" /> 

步驟4:activity_main.xml中把下面的代碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".MainActivity"> 

    <include 
     android:id="@+id/tool_bar" 
     layout="@layout/tool_bar" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     /> 

    <com.example.slidingtab.SlidingTabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:elevation="2dp" 
     android:background="@color/ColorPrimary"/> 
<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 

    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:layout_weight="1" 
    /> 

步驟5:現在創建制表符佈局作爲tab_1.xmltab_2.xml

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


    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="You Are In Tab 1" 
     android:id="@+id/textView" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 


</LinearLayout> 

步驟6:類似地創建兩個片段作爲fragment_one的.java和fragment_two.java

public class Tab1 extends Fragment { 

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

步驟7:ViewPager類:

public class ViewPagerAdapter extends FragmentStatePagerAdapter { 

    CharSequence Titles[]; // This will Store the Titles of the Tabs which are Going to be passed when ViewPagerAdapter is created 
    int NumbOfTabs; // Store the number of tabs, this will also be passed when the ViewPagerAdapter is created 


    // Build a Constructor and assign the passed Values to appropriate values in the class 
    public ViewPagerAdapter(FragmentManager fm,CharSequence mTitles[], int mNumbOfTabsumb) { 
     super(fm); 

     this.Titles = mTitles; 
     this.NumbOfTabs = mNumbOfTabsumb; 

    } 

    //This method return the fragment for the every position in the View Pager 
    @Override 
    public Fragment getItem(int position) { 

     if(position == 0) // if the position is 0 we are returning the First tab 
     { 
      Tab1 tab1 = new Tab1(); 
      return tab1; 
     } 
     else    // As we are having 2 tabs if the position is now 0 it must be 1 so we are returning second tab 
     { 
      Tab2 tab2 = new Tab2(); 
      return tab2; 
     } 


    } 

    // This method return the titles for the Tabs in the Tab Strip 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return Titles[position]; 
    } 

    // This method return the Number of tabs for the tabs Strip 

    @Override 
    public int getCount() { 
     return NumbOfTabs; 
    } 
} 

第8步:最後一步:

public class MainActivity extends ActionBarActivity { 

    // Declaring Your View and Variables 

    Toolbar toolbar; 
    ViewPager pager; 
    ViewPagerAdapter adapter; 
    SlidingTabLayout tabs; 
    CharSequence Titles[]={"Home","Events"}; 
    int Numboftabs =2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     // Creating The Toolbar and setting it as the Toolbar for the activity 

     toolbar = (Toolbar) findViewById(R.id.tool_bar); 
     setSupportActionBar(toolbar); 


     // Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs. 
     adapter = new ViewPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs); 

     // Assigning ViewPager View and setting the adapter 
     pager = (ViewPager) findViewById(R.id.pager); 
     pager.setAdapter(adapter); 

     // Assiging the Sliding Tab Layout View 
     tabs = (SlidingTabLayout) findViewById(R.id.tabs); 
     tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width 

     // Setting Custom Color for the Scroll bar indicator of the Tab View 
     tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { 
      @Override 
      public int getIndicatorColor(int position) { 
       return getResources().getColor(R.color.tabsScrollColor); 
      } 
     }); 

     // Setting the ViewPager For the SlidingTabsLayout 
     tabs.setViewPager(pager); 

} 

    } 

Credits

相關問題