5
Ich habe Viewpager verwendet, um die Daten pro Monat anzuzeigen. und ich möchte den Titel der kollabierenden Symbolleiste ändern, die sich auf der Seite von viewpager ändert. Der minimierende Symbolleistentitel ändert sich nur beim Scrollen in der Symbolleiste. Titel der Collapsing-Symbolleiste ändert sich nicht bei der dynamischen Einstellung?
mein Layout
<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>
In Aktivität
/**
* 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) {
}
}
Ich bin auch mit dem gleichen Problem konfrontiert. AFAIK bis jetzt können Sie den Titel der kollabierenden Werkzeugleiste nicht dynamisch setzen, sondern nur statisch. Also, wenn Sie irgendeine Lösung haben, posten Sie es. – surhidamatya