2015-12-10 104 views
1

我有以下程序,我想在其中添加一个折叠工具栏。这是一个选项卡布局,附有多个片段。滚动片段应该折叠工具栏

XML文件

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" > 

     <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 

      <android.support.design.widget.TabLayout 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       app:tabMode="scrollable" 
       app:tabContentStart="72dp" /> 
    </android.support.design.widget.AppBarLayout> 

     <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 



</android.support.design.widget.CoordinatorLayout> 

JAVA文件

public class Competitions extends AppCompatActivity { 
    private Toolbar toolbar; 
    private TabLayout tabLayout; 
    private ViewPager viewPager; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Intent intent = getIntent(); 

     setContentView(R.layout.competition); 

     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setTitle("Competitions"); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     viewPager = (ViewPager) findViewById(R.id.viewpager); 
     setupViewPager(viewPager); 

     tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 
    } 

    private void setupViewPager(ViewPager viewPager) { 
     ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     adapter.addFragment(new IntChal(), "International Challenges"); 
     adapter.addFragment(new XMach(), "Xtreme Machines"); 
     adapter.addFragment(new TVoltz(), "Technovoltz"); 
     adapter.addFragment(new Robotron(), "Robotron"); 
     adapter.addFragment(new Dimensions(), "Dimensions"); 
     adapter.addFragment(new Tinker(), "Tinkerer"); 
     adapter.addFragment(new Aero(), "Aerostrike"); 
     adapter.addFragment(new Lamp(), "Solar Urja Lamp"); 
     viewPager.setAdapter(adapter); 
    } 

    class ViewPagerAdapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragmentList = new ArrayList<>(); 
     private final List<String> mFragmentTitleList = new ArrayList<>(); 

     public ViewPagerAdapter(FragmentManager manager) { 
      super(manager); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return mFragmentList.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragmentList.size(); 
     } 

     public void addFragment(Fragment fragment, String title) { 
      mFragmentList.add(fragment); 
      mFragmentTitleList.add(title); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitleList.get(position); 
     } 
    } 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       onBackPressed(); 
       return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 


} 

我以前这样尝试过,但是当我取代我的工具栏有一个折叠式工具,所发生的一切,它会崩溃如果我滚动工具栏部分。我需要的是,在滚动片段时,工具栏应该会崩溃。我怎么做。

P.S.我是初学者,所以请解释您的解决方案为什么会起作用。

编辑 好吧,我想要的是,当我滚动片段时,工具栏应该崩溃它自己。使用以下解决方案,发生的情况是我必须先手动折叠工具栏,然后滚动浏览片段,这不是我想要的。请帮我一样

+1

只需在您的'Toolbar'和'android:fitsSystemWindows =“true”'中将'app:layout_scrollFlags =“scroll | enterAlways”'添加到您的'CoordinatorLayout'中 –

回答

0

看起来你的布局是正确的,参考这个tutorial它会帮助你实现你的目标。

更新:

添加app:layout_scrollFlags="scroll|enterAlways"到工具栏会解决您的问题。

0

尝试在android studio中创建Scrolling Activity项目。这给你一个collapsing toolbar。步骤:Android工作室 - >添加新项目 - >提供项目详细信息 - >在步骤Add an activity to mobile中选择Scrolling Activity。完成

Steps for adding Scrolling activity

0

在“https://github.com/chrisbanes/cheesesquare”更多参考更改的工具栏这样

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize"    
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

见例如这里,它是工作对我罚款。我希望它能帮助你。

相关问题