2017-04-18 4 views
0

タブ付きページでアプリを作る。[Xamarin] style、Theme.Holo&Theme.AppCompat

私がAppCompatを使用している場合、私はタブをカスタマイズできませんが、 スワイプアクションでタブを動かすことができます。

私がHoloを使用している場合は、タブをカスタマイズすることはできますが、スワイプアクションを使用して 移動タブを使用することはできません。

マイホロテーマ

 <resources> 
     <!--my custom theme--> 
     <style name="MyTheme" 
       parent="@android:style/Theme.Holo"> 
      <item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item> 
      <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item> 
     <item name="android:background">#FFFFFF</item>  
     </style> 

     <!--tab text style--> 
     <style name="MyActionBarTabText" 
       parent="@android:style/Widget.Holo.ActionBar.TabText"> 
      <item name="android:textColor">#000000</item> 
      <item name="android:background">@drawable/tab_selector</item>  
     </style> 


     <!--tab style--> 
     <style name="MyActionBarTabStyle" parent="@android:style/Widget.Holo.ActionBar.TabView"> 
      <!--<item name="android:background">#DCEBF0</item>--> 
      <item name="android:background">@drawable/tab_selector</item> 
      <item name="android:layout_width">1dp</item> 
     </style> 
     </resources> 

私APPCOMPATテーマ

 <resources> 
      <style name="MyTheme" parent="MyTheme.Base"> 
      </style> 
      <!-- Base theme applied no matter what API --> 
      <style name="MyTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> 
       <!--If you are using revision 22.1 please use just windowNoTitle. Without android:--> 
       <item name="windowNoTitle">true</item> 
       <!--We will be using the toolbar so no need to show ActionBar--> 
       <item name="windowActionBar">false</item> 
       <!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette--> 


      <!-- You can also set colorControlNormal, colorControlActivated 
       colorControlHighlight and colorSwitchThumbNormal. --> 
       <item name="windowActionModeOverlay">true</item>  
      </style> 


     </resources> 

どのように私は、タブをカスタマイズし、スワイプアクションを使用することができますか?

またはAppCompatでタブテーマのみをホロに変更することはできますか? APPCOMPATを使用して

答えて

0

、あなたはまだプログラムでそれを行うことができます。

//Setting TabLayout 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    tabLayout.addTab(tabLayout.newTab()); 
    tabLayout.addTab(tabLayout.newTab()); 
    tabLayout.addTab(tabLayout.newTab()); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

    //Setting viewPager 
    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
    final PagerAdapter adapter = new 
           PagerAdapter(getSupportFragmentManager(), 
           tabLayout.getTabCount()); 
    viewPager.setAdapter(adapter); 
    viewPager.addOnPageChangeListener(new 
        TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
    tabLayout.setupWithViewPager(viewPager); 

をし、あなたのページにクラスを作成します。

使用あなたのOnCreateのオーバーライト方式では、このコード(活動はあなたがタブを表示します)

public class PagerAdapter extends FragmentStatePagerAdapter { 
    int mNumOfTabs; 

    private String[] tabTitles = new String[]{"TAB1", "TAB2", "TAB3"}; 


    public PagerAdapter(FragmentManager fm, int NumOfTabs) { 
     super(fm); 
     this.mNumOfTabs = NumOfTabs; 
    } 

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

    @Override 
    public Fragment getItem(int position) { 

    switch (position) { 
     case 0: 
      Tab1 tab1 = new Tab1(); 
      return tab1; 
     case 1: 
      Tab2 tab2 = new Tab2(); 
      return tab2; 
     case 2: 
      Tab3 tab3 = new Tab3(); 
      return tab3; 
     default: 
      return null; 
    } 
} 

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

これはあなたのXMLレイアウトファイルでViewPagerを定義する方法である:

このようなアダプタ
<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@id/tab_layout" 
    android:background="@drawable/gradient_grey"> 

あなたのために働くかどうか教えてください!