2015-08-03 125 views
14

我想实现滑动标签内的动作条标签就像flipboard。所以主标签之一将有三个标签。子标签将首先滚动,一旦所有标签滚动,主标签进入焦点并开始滚动。 Flipboard的UI FlipBoard Tabs动作条标签内的滑动标签

我附上截图有没有人这样做?请帮忙。

+1

Thanks guys .. @ MimmoGrottoli任何想法flipboard如何更改viewpager上的文本颜色onPageScroll – user1288005

+2

我猜他们有一个透明的图像作为文本,他们移动一个红色的矩形放置在标签 –

+1

或者也许文本的颜色只是透明:) –

回答

4

它似乎已经由Android管理:您只需在外部活动中创建ViewPager,并为ViewPager托管的每个片段创建一个ViewPager。这是我的测试项目:

MainActivity.java

public class MainActivity extends AppCompatActivity { 

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

     MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager()); 
     ViewPager viewPager = (ViewPager) findViewById(R.id.pager_activity); 
     viewPager.setAdapter(adapter); 
    } 

    private class MyPagerAdapter extends FragmentStatePagerAdapter { 

     public MyPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public android.support.v4.app.Fragment getItem(int i) { 
      return new InnerFragment(); 
     } 

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

     @Override 
     public CharSequence getPageTitle(int position) { 
      return "ACTIVITY TITLE " + (position+1); 
     } 
    } 
} 

activity_main.xml中

<RelativeLayout 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" 
    tools:context=".MainActivity"> 

    <android.support.v4.view.ViewPager 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/pager_activity" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.v4.view.PagerTitleStrip 
      android:id="@+id/pager_title_strip_activity" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="top" 
      android:background="#33b5e5" 
      android:textColor="#fff" 
      android:paddingTop="4dp" 
      android:paddingBottom="4dp" /> 

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

</RelativeLayout> 

InnerFragment.java

public class InnerFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View root = inflater.inflate(R.layout.fragment_inner, container, false); 
     ViewPager pager = (ViewPager) root.findViewById(R.id.pager); 
     MyPagerAdapter adapter = new MyPagerAdapter(getChildFragmentManager()); 
     pager.setAdapter(adapter); 
     return root; 
    } 

    private class MyPagerAdapter extends FragmentStatePagerAdapter { 

     public MyPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public android.support.v4.app.Fragment getItem(int i) { 
      return PageFragment.newInstance(i+1); 
     } 

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

     @Override 
     public CharSequence getPageTitle(int position) { 
      return "FRAGMENT " + (position+1) + " TITLE " + (position+1); 
     } 
    } 
} 
(活动viewpager内举办的片段之一)

及其布局fragment_inner.xml

<FrameLayout 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" 
    tools:context="it.test.testflipboardviewpager.InnerFragment"> 

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

     <android.support.v4.view.PagerTitleStrip 
      android:id="@+id/pager_title_strip" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="top" 
      android:background="#33b5e5" 
      android:textColor="#fff" 
      android:paddingTop="4dp" 
      android:paddingBottom="4dp" /> 

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

</FrameLayout> 

PageFragment.java - 由InnerFragment主办的片段之一viewpager

public class PageFragment extends Fragment { 

    private int mPosition; 

    public static PageFragment newInstance(int position) { 
     PageFragment fragment = new PageFragment(); 
     Bundle args = new Bundle(); 
     args.putInt("position", position); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    public PageFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      mPosition = getArguments().getInt("position"); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View root = inflater.inflate(R.layout.fragment_page, container, false); 
     TextView textView = (TextView) root.findViewById(R.id.text); 
     textView.setText("" + mPosition); 
     return root; 
    } 
} 

和它的布局fragment_page.xml

<FrameLayout 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" 
    tools:context="it.test.testflipboardviewpager.PageFragment"> 

    <TextView 
     android:id="@+id/text" 
     android:textSize="25sp" 
     android:gravity="center" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</FrameLayout> 

这就是它!试着让我知道。

编辑: 忘了说第一个组件不是一个ActionBar。