首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[ Theme.Holo & Theme.AppCompat ]格调

[ Theme.Holo & Theme.AppCompat ]格调
EN

Stack Overflow用户
提问于 2017-04-18 06:07:05
回答 1查看 367关注 0票数 0

我用选项卡式页面制作应用程序。

如果我使用AppCompat,我不能自定义选项卡,但我可以使用移动选项卡与滑动操作。

如果我使用Holo,我可以自定义选项卡,但我不能使用移动选项卡与滑动操作。

My Holo主题

代码语言:javascript
复制
      <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主题

代码语言:javascript
复制
      <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中的Holo吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-18 12:56:40

使用Appcompat,您仍然可以以编程的方式完成它:

在OnCreate覆盖方法(要显示选项卡的活动)中使用以下代码:

代码语言:javascript
复制
    //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); 

并为页面适配器创建一个类,如下所示:

代码语言:javascript
复制
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:

代码语言:javascript
复制
    <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">

如果对你有用,请告诉我!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43464768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档