2015-12-10 1 views
1

У меня есть следующая программа, в которой я хочу добавить свернутую панель инструментов. Это вкладка-макет с прикрепленными фрагментами.Прокрутка фрагмента должна свернуть панель инструментов

XML File

<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. Я новичок, поэтому, пожалуйста, объясните, почему ваше решение работает.

EDIT Хорошо, что я хочу, что, когда я прокручиваю фрагмент, панель должна рухнуть на своем собственном. Со следующими решениями, что происходит, я должен вручную сначала свернуть панель инструментов, а затем прокрутить фрагмент, что не то, что я хочу. Пожалуйста, помогите мне сделать то же самое.

+1

просто добавьте 'app: layout_scrollFlags =" прокрутить | enterAlways "' к вашей 'Toolbar' и' android: fitsSystemWindows = "true" 'в ваш' CoordinatorLayout' в XML –

ответ

0

похоже, что ваш макет верен, обратитесь к этому tutorial, он поможет вам достичь своей цели.

Update:

Добавление app:layout_scrollFlags="scroll|enterAlways" на панели инструментов будет решить вашу проблему.

0

Попробуйте создать проект Scrolling Activity в андроид-студии. Который дает вам collapsing toolbar. Шаги: Студия Android -> Добавить новый проект -> Дайте информацию о проекте -> на этапе Add an activity to mobile выберите Scrolling Activity. Совершено

Steps for adding Scrolling activity

0

Изменение панели инструментов, как этот

<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" /> 

Смотрите пример здесь «https://github.com/chrisbanes/cheesesquare» для получения дополнительной справки, она работает хорошо для меня. Я надеюсь, что это может вам помочь.

 Смежные вопросы

  • Нет связанных вопросов^_^