带有关闭和箭头按钮的Android工具栏导航

时间:2017-01-06 18:46:54

标签: android android-toolbar

我想像这样制作一个工具栏导航。

当我创建活动时,我会膨胀片段并在工具栏上绘制一个关闭按钮。但是,如果用户打开另一个片段,则显示后退箭头......但是在此源上,它只显示关闭按钮。

这是我的onCreate()方法。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_initial);

    setSupportActionBar(mToolbar);

    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white);
    }

    getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
        @Override
        public void onBackStackChanged() {
            int stackHeight = getSupportFragmentManager().getBackStackEntryCount();
            if (stackHeight > 0) {
                if (getSupportActionBar() != null) {
                    getSupportActionBar().setHomeButtonEnabled(true);
                    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                }
            } else {
                if (getSupportActionBar() != null) {
                    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
                    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white);
                }
            }
        }
    });

    if (findViewById(R.id.container_initial) != null) {
        if (savedInstanceState != null) {
            return;
        }

        ActivityUtils.addFragmentToActivity(getSupportFragmentManager(), new LoginFragment(), R.id.container_initial);
    }
}

如果我删除此代码,请使用后退箭头按钮的一部分,但不要显示关闭按钮...

        if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white);
    }

2 个答案:

答案 0 :(得分:0)

在这样的菜单中尝试,但是这样就可以取代菜单了

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/Updatetimetable"
    android:orderInCategory="100"
    android:title="Update"
    android:icon="@drawable/updatepopup"
    app:showAsAction="ifRoom"/>
<item
    android:id="@+id/viewalert"
    android:orderInCategory="200"
    android:title="View alert"
    android:icon="@drawable/alertcards"
    app:showAsAction="ifRoom"/>

答案 1 :(得分:0)

如果工具栏位于活动布局中。为活动中的图标创建一个setter方法&amp;在片段中调用它来改变它。

void setIcon(){
..
}

onBackPressed(){
if(fragment visible) getsupportfragmentmanger.begintranscation().close
else super.onbackprsesed
}