[英]toolbar back button functionality
我遇到了工具欄和后退按鈕的問題。 這是我的設置:
當我添加一個細節片段時,我會按照此處所述為工具欄漢堡包設置動畫。 這會使漢堡包成為箭頭的動畫。
即使在評論部分,用戶也會提到:
這非常有效。 只需將start = 0和end = 1設置為從漢堡包轉到箭頭,然后將start = 1和end = 0設置為箭頭轉換為漢堡包。 您需要跟蹤的一件事是當箭頭顯示時抽屜關閉。 此時,漢堡包最終被顯示(因為抽屜的滑動),你必須糾正。
但我無法弄清楚如何使后箭頭正常運行。 當我按下后箭頭時,抽屜打開,細節片段不會彈出。 我應該怎么做呢?
經過幾個小時的搜索和游戲,我能夠構建一個滿足每個要求的解決方案。 來源: 1 , 2
detailFragmentActive = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
setSupportActionBar(mToolbar);
...
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(detailFragmentActive) {
onBackPressed();
//if(displayBackAgain)
//return; //return after so you don't call syncState();
}else if (mDrawerLayou.isDrawerOpen(GravityCompat.START))
mDrawerLayout.closeDrawer(GravityCompat.START);
else
mDrawerLayout.openDrawer(GravityCompat.START);
mDrawerToggle.syncState();
}
});
}
private void animateHamburger(boolean isArrow){
int start = 0, end = 1;
if(isArrow){
detailFragmentActive = false;
start = 1; end = 0;
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}else{
detailFragmentActive = true;
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
}
ValueAnimator anim = ValueAnimator.ofFloat(start, end);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float slideOffset = (Float) valueAnimator.getAnimatedValue();
mDrawerToggle.onDrawerSlide(mDrawerLayout, slideOffset);
}
});
anim.setInterpolator(new DecelerateInterpolator());
anim.setDuration(500);
anim.start();
}
@Override
public void onBackPressed() {
super.onBackPressed();
animateHamburger(true);
}
public void onFragmentChange(){
...
animateHamburger(false);
}
您可以為此按鈕設置監聽器:
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (flagDeterminingAction) {
drawerLayout.openDrawer(drawerListView);
} else {
onBackPressed();
//or popbackstack or whatever you are using to going back in navigation
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.