Es savā lietojumprogrammā pārēju no ActionBar
uz Toolbar
.
Bet es nezinu, kā parādīt un iestatīt klikšķa notikumu atpakaļ bultiņai Toolbar
, kā es to darīju Actionbar
.
Izmantojot ActionBar
, es izsaucu mActionbar.setDisplayHomeAsUpEnabled(true)
.
Bet līdzīgas metodes nav.
Vai kāds ir saskāries ar šādu situāciju un ir atradis veidu, kā to atrisināt?
Ja izmantojat ActionBarActivity
, tad varat pateikt Android, lai Toolbar
izmanto kā ActionBar
, piemēram, šādi:
Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
setSupportActionBar(toolbar);
Un tad zvani uz
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
darbosies. To var izmantot arī fragmentos, kas ir pievienoti ActionBarActivities
, jūs varat to izmantot šādi:
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);
Ja neizmantojat ActionBarActivities
vai vēlaties saņemt atpakaļ bultiņu uz Toolbar
, kas nav iestatīta kā jūsu SupportActionBar
, tad varat izmantot šādu:
mActionBar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_back));
mActionBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//What to do on back clicked
}
});
Ja izmantojat android.support.v7.widget.Toolbar
, tad jums jāpievieno šāds kods jūsu AppCompatActivity
:
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
varat izmantot rīkjoslas setNavigationIcon metodi. Android Doc
mToolBar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOnBackPress();
}
});
Ja jūs izmantojat AppCompatActivity
un esat devušies ceļā, lai to neizmantotu, jo nevēlaties saņemt automātisko ActionBar
, ko tā nodrošina, jo vēlaties atdalīt Toolbar
, jo vēlaties atdalīt Toolbar
, jo jums nepieciešams Material Design un CoordinatorLayout
vai AppBarLayout
, tad apsveriet šo:
Jūs joprojām varat izmantot AppCompatActivity
, jums nav jāpārtrauc tā izmantošana tikai tāpēc, lai savā xml varētu izmantot <android.support.v7.widget.Toolbar>
. Vienkārši izslēdziet darbību joslas stilu šādi:
Vispirms atvasiniet stilu no vienas no NoActionBar tēmām, kas jums patīk jūsu styles.xml
, es izmantoju Theme.AppCompat.Light.NoActionBar
šādi:
<style name="SuperCoolAppBarActivity" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">@color/primary_dark</item>
...
...
</style>
Savā App's manifestā izvēlieties tikko definēto bērnu stila tēmu, piemēram, šādi:
<activity
android:name=".activity.YourSuperCoolActivity"
android:label="@string/super_cool"
android:theme="@style/SuperCoolAppBarActivity">
</activity>
Aktivitātes Xml, ja rīkjosla ir definēta šādi:
...
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
/>
...
Pēc tam, un tas ir svarīgi, jūs nosakāt atbalsta darbību joslu AppCompatActivity, kuru paplašināt, lai rīkjosla jūsu xml kļūtu par darbību joslu. Man šķiet, ka šis ir labāks veids, jo jūs varat vienkārši darīt daudzas lietas, ko ļauj ActionBar, piemēram, izvēlnes, automātisko aktivitātes nosaukumu, elementu atlases apstrādi utt., nepievienojot pielāgotus klikšķu apstrādātājus utt.
Activity's onCreate pārspīlējumā veiciet šādu darbību:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_super_cool);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Your toolbar is now an action bar and you can use it like you always do, for example:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}