我想創建一個可摺疊工具欄像chesesquare庫中的一個,但我面臨這個問題:工具欄標題消失在摺疊狀態下改變方向時,
https://www.youtube.com/watch?v=THdxcyEc1CA&feature=youtu.be
任何人知道如何解決這個問題?
我想創建一個可摺疊工具欄像chesesquare庫中的一個,但我面臨這個問題:工具欄標題消失在摺疊狀態下改變方向時,
https://www.youtube.com/watch?v=THdxcyEc1CA&feature=youtu.be
任何人知道如何解決這個問題?
您可以檢查配置更改(方向)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。
這不工作,我想要的是工具欄保持在相同的狀態(這已經發生在默認行爲),但標題總是在正確的位置。如果您查看視頻,您可以看到旋轉設備後標題消失。 – MichelReap
您是否檢查過https://code.google.com/p/android/issues/detail?id=184950。這個問題已經結束。您可以使用新版本的支持庫來避免這種情況。我正在使用支持庫版本25.0.1。在這裏它正在工作。 –
你是對的,它不會發生在最新版本。 – MichelReap
在onConfigurationChanged你可以嘗試運行
handler.postDelayed(new Runnable(){
@Overrride
public void run(){
toolbar.invalidate();
}
},[Try different time lapses(miliseconds)]);
但是,這將是顯而易見的呢? – MichelReap
你有沒有試過?,也許是如此之快,它並不明顯。我知道是很hacky,但我不知道如何解決這個xD –
您是否希望工具欄始終展開,否則從縱向到橫向的相同狀態(打開/關閉)? –
這將是可取的,是的,所以你在同一個狀態,但標題正確定位。 – MichelReap