5

Я использовал viewpager для отображения данных в месяц. и я хочу изменить заголовок сворачиваемой панели инструментов, чтобы перейти на страницу просмотра. Сбрасывание названия панели инструментов изменяется только при прокрутке панели инструментов. enter image description hereНазвание панели сворачивания не меняется при динамической настройке?

мой макет

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

    <android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 

      <android.support.v4.view.ViewPager 
       android:id="@+id/view_pager" 
       android:layout_width="match_parent" 
       android:layout_height="@dimen/activity_history_view_pager_height" /> 
     </LinearLayout> 
    </android.support.v4.widget.NestedScrollView> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/my_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsing_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/activity_history_collapsing_toolbar_height" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar_flexible_space" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       android:fitsSystemWindows="true" 
       android:minHeight="?attr/actionBarSize" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
       app:theme="@style/ThemeOverlay.AppCompat.Light" /> 
     </android.support.design.widget.CollapsingToolbarLayout> 

     <TextView 
      android:id="@+id/txt_year" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="@dimen/activity_history_margin_left" 
      android:layout_marginStart="@dimen/activity_history_margin_left" 
      android:text="@string/activity_history_year" 
      android:textColor="@color/white" 
      android:textSize="@dimen/activity_history_text_size" /> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="@dimen/activity_history_margin_bottom" 
      android:orientation="vertical" 
      app:layout_scrollFlags="scroll"> 

      <LinearLayout 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentEnd="true" 
       android:layout_alignParentRight="true" 
       android:layout_marginEnd="@dimen/activity_history_margin_right" 
       android:layout_marginRight="@dimen/activity_history_margin_right" 
       android:orientation="horizontal"> 

       <ImageView 
        android:id="@+id/img_leftBackArrow" 
        android:layout_width="@dimen/activity_history_arrow_size" 
        android:layout_height="@dimen/activity_history_arrow_size" 
        android:contentDescription="@string/content_description" 
        android:src="@drawable/previous_arrow" /> 

       <ImageView 
        android:id="@+id/img_rightBackArrow" 
        android:layout_width="@dimen/activity_history_arrow_size" 
        android:layout_height="@dimen/activity_history_arrow_size" 
        android:layout_marginLeft="@dimen/activity_history_arrow_size" 
        android:layout_marginStart="@dimen/activity_history_arrow_size" 
        android:contentDescription="@string/content_description" 
        android:src="@drawable/next_arrow" /> 

      </LinearLayout> 


     </RelativeLayout> 

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

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

В деятельности

/** 
    * Lists History of the Tasks and it's status on the basis of Date 
    */ 
    public class HistoryActivity extends BaseActivity implements ViewPager.OnPageChangeListener { 

     @InjectView(R.id.toolbar_flexible_space) 
     Toolbar toolbar; 

     @InjectView(R.id.collapsing_toolbar) 
     CollapsingToolbarLayout mCollapsingToolbar; 

     @InjectView(R.id.view_pager) 
     ViewPager viewPager; 

     @InjectView(R.id.txt_year) 
     TextView txtYear; 
     int viewPagerSize = 0; 

     ArrayList<String> taskAddedMonths; 

     @OnClick({R.id.img_leftBackArrow, R.id.img_rightBackArrow}) 
     public void onClick(View v) { 
      switch (v.getId()) { 
       case R.id.img_rightBackArrow: 
        moveForward(); 
        break; 
       case R.id.img_leftBackArrow: 
        moveBackWard(); 
        break; 

      } 

     } 

     /** 
     * move view pager page as accroding to clicking on backword arrow. 
     */ 
     private void moveBackWard() { 
      int currentPosition = viewPager.getCurrentItem(); 
      if (currentPosition > 0) { 
       int nextPosition = currentPosition - 1; 
       viewPager.setCurrentItem(nextPosition); 
       mCollapsingToolbar.setTitle(getCollapsingToolbarTitle(taskAddedMonths.get(nextPosition))); 
      } 
     } 

     /** 
     * move view pager page as according to clicking on forward arrow. 
     */ 
     private void moveForward() { 
      int currentPosition = viewPager.getCurrentItem(); 

      if (currentPosition < viewPagerSize-1) { 
       int nextPosition = currentPosition + 1; 
       if (viewPagerSize == 1) { 
        //do nothing 
       } else { 
        viewPager.setCurrentItem(currentPosition + 1); 
        mCollapsingToolbar.setTitle(getCollapsingToolbarTitle(taskAddedMonths.get(nextPosition))); 
       } 
      } 
     } 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      taskAddedMonths = DatabaseManager.getInstance(HistoryActivity.this).getAllMonths(); 
      viewPagerSize = taskAddedMonths.size(); 

      mCollapsingToolbar.setTitle(getCollapsingToolbarTitle(taskAddedMonths.get(0))); 
      mCollapsingToolbar.setExpandedTitleColor(Color.WHITE); 
      toolbar.setNavigationIcon(ContextCompat.getDrawable(this, R.drawable.ic_backarrow)); 

      viewPager.setAdapter(new ViewPagerAdapter(HistoryActivity.this, DatabaseManager.getInstance(HistoryActivity.this).getAllMonths())); 
      viewPager.addOnPageChangeListener(this); 

     } 

     @Override 
     public int getLayoutId() { 
      return R.layout.activity_history; 
     } 

     @Override 
     public Toolbar getToolbar() { 
      return toolbar; 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.menu_history, menu); 
      return true; 
     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      // Handle action bar item clicks here. The action bar will 
      // automatically handle clicks on the Home/Up button, so long 
      // as you specify a parent activity in AndroidManifest.xml. 
      int id = item.getItemId(); 
      //noinspection SimplifiableIfStatement 
      if (id == android.R.id.home) { 
       onBackPressed(); 
      } 
      return super.onOptionsItemSelected(item); 
     } 

     /** 
     * get the name of month with concatenating History as like this{May History}; 
     * 
     * @param month 
     * @return 
     */ 
     private String getCollapsingToolbarTitle(String month) { 
      return month + " " + "History"; 
     } 

     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

     } 

     @Override 
     public void onPageSelected(int position) { 
/******************* what i have done*******************/ 
      //change the title of collapsing toolbar accroding to change in page of viewpager 
      mCollapsingToolbar.setTitle(getCollapsingToolbarTitle(taskAddedMonths.get(position))); 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    } 
+1

Я слишком сталкиваюсь с той же проблемой. AFAIK до сих пор вы не можете установить название сворачивающейся панели инструментов динамически, вы можете установить ее только статически. Поэтому, если у вас есть какое-либо решение, опубликуйте его. – surhidamatya

ответ

1

Это был known bug, который должен быть зафиксирован в выпуске библиотеки дизайна v22.2.1.

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