J'essaie d'utiliser définir une icône personnalisée dans la barre d'outils du support, mais la seule icône affichée est une flèche vers la gauche ... J'ai essayé de la définir dans la présentation et par programme, mais le résultat est identique.
Voici mon activité
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
toolbar.setNavigationIcon(R.drawable.ic_launcher);
toolbar.setTitle("");
setSupportActionBar(toolbar);
}
Et ma mise en page de la barre d'outils
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/my_toolbar"
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
app:navigationIcon="@drawable/ic_action_bar"
Android:minHeight="@dimen/action_bar_size"
Android:background="?attr/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
/>
J'ai juste essayé moi-même et le problème semble être que vous devez appeler setNavigationIcon
après setSupportActionBar(toolbar)
. Sinon, il ne montrera que la flèche comme vous l'avez décrit.
Donc, pour résoudre ce problème, il suffit de changer le code comme suit:
//...
Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_launcher);
toolbar.setTitle("");
Remarque: Même chose pour définir le titre, contentDescription, etc. Je ne sais pas s'il s'agit d'un bogue ou s'il est prévu, mais c'est vraiment étrange.
Le moyen le plus efficace pour y parvenir:
pour afficher correctement l’icône de gauche, appelez cette fonction dans onCreateView ou onCreate:
protected void enableDisplayHomeAsHome(boolean active) {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(active); // switch on the left hand icon
actionBar.setHomeAsUpIndicator(R.drawable.ic_action_home); // replace with your custom icon
}
}
Vous pouvez maintenant intercepter ce bouton dans votre activité:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Android.R.id.home: { //index returned when home button pressed
homeButtonPressed();
return true;
}
}
return super.onOptionsItemSelected(item);
}
Si vous souhaitez changer l’icône du menu . (peut-être que quelqu'un en aura besoin)
Dans votre activité
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_info, menu);
return true;
}
dans votre dossier de menu en res. (menu_info.xml)
<?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/menu_info_action"
Android:icon="@drawable/ic_info_icon"
Android:title="@string/information"
app:showAsAction="ifRoom"/>
</menu>