在折叠状态下更改方向时工具栏标题消失

Toolbar title disappearing when changing orientation in collapsed state

我正在尝试创建一个类似于 chesesquare 存储库中的可折叠工具栏,但我遇到了这个问题:

https://www.youtube.com/watch?v=THdxcyEc1CA&feature=youtu.be

有人知道如何解决这个问题吗?

在 onConfigurationChanged 上你可以尝试 运行

handler.postDelayed(new Runnable(){
     @Overrride
     public void run(){
         toolbar.invalidate();
     }
},[Try different time lapses(miliseconds)]);

您可以在配置更改(方向)时检查 AppBarLayout 的状态,并存储它。然后您可以在应用配置更改后为 AppBarLayout 设置该状态。

public class CheeseDetailActivity extends AppCompatActivity {

public static final String EXTRA_NAME = "cheese_name";
AppBarLayout appBarLayout;
boolean isCollapsed = false;

//state change listener
AppBarLayout.OnOffsetChangedListener toolbarStateListener = new AppBarLayout.OnOffsetChangedListener() {
    @Override
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
        if (verticalOffset == 0) {
            // Collapsed
            isCollapsed = true;
        } else {
            // Not collapsed
            isCollapsed = false;

        }
    }
};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);

    Intent intent = getIntent();
    final String cheeseName = intent.getStringExtra(EXTRA_NAME);

    final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    CollapsingToolbarLayout collapsingToolbar =
            (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
    collapsingToolbar.setTitle(cheeseName);

    //getting app bar layout
    appBarLayout = (AppBarLayout) findViewById(R.id.appbar);
    //set listener to listen state change of app bar layout
    appBarLayout.addOnOffsetChangedListener(toolbarStateListener);

    loadBackdrop();
}


@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    //save state on orientation change
    savedInstanceState.putBoolean("isCollapsed", isCollapsed);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    //get state on orientation change
    isCollapsed = savedInstanceState.getBoolean("isCollapsed");
}

@Override
protected void onResume() {
    super.onResume();
    //set state of app bar layout
    appBarLayout.setExpanded(isCollapsed);
}

private void loadBackdrop() {
    final ImageView imageView = (ImageView) findViewById(R.id.backdrop);
    Glide.with(this).load(Cheeses.getRandomCheeseDrawable()).centerCrop().into(imageView);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.sample_actions, menu);
    return true;
}
}

我已经在 CheeseSquare 存储库中编辑了 CheeseDetailActivity。