5

我已經使用viewpager來顯示每月的數據。我想要改變摺疊工具欄的標題,以便在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

回答

相關問題