J’ai créé une barre d’outils, mais lorsque j’ajoute des éléments de menu dans menu.xml, cela se traduit toujours par un débordement. Comment puis-je l’append séparément? De plus, le titre est affiché au milieu (verticalement), comment le montrer en haut?
menu.xml
MainActivity.java
package com.example.toolbar; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.Toolbar; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; 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_awesome_toolbar); setSupportActionBar(toolbar); // toolbar.setNavigationIcon(R.drawable.back); toolbar.setLogo(R.drawable.ic_launcher); //toolbar.setTitle("Title"); // toolbar.setSubtitle("Subtitle"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
activity_main.xml
OK, j’ai les icons car j’ai écrit dans menu.xml android:showAsAction="ifRoom"
au lieu de app:showAsAction="ifRoom"
depuis que app:showAsAction="ifRoom"
bibliothèque v7.
Cependant, le titre arrive au centre de la barre d’outils étendue. Comment le faire apparaître en haut?
Essayez de faire ceci:
getSupportActionBar().setDisplayShowTitleEnabled(false); getSupportActionBar().setDisplayHomeAsUpEnabled(false); getSupportActionBar().setDisplayShowTitleEnabled(false);
et si vous avez créé votre barre d’outils personnalisée (ce que vous avez probablement fait), vous pouvez utiliser la méthode la plus simple possible:
toolbarTitle = (TextView)findViewById(R.id.toolbar_title); toolbarSubTitle = (TextView)findViewById(R.id.toolbar_subtitle); toolbarTitle.setText("Title"); toolbarSubTitle.setText("Subtitle");
Même chose pour toutes les autres vues que vous insérez dans votre barre d’outils. J’espère que cela aide.
Ajoutez cette ligne en haut:
"xmlns:app="http://schemas.android.com/apk/res-auto"
puis utilisez:
app:showasaction="ifroom"
Pour contrôler l’emplacement du titre, vous pouvez définir une police personnalisée comme expliqué ici (par twaddington): Lien
Ensuite, pour déplacer la position du texte, dans updateMeasureState()
vous appendiez p.baselineShift += (int) (p.ascent() * R);
De même, dans updateDrawState()
ajoutez tp.baselineShift += (int) (tp.ascent() * R);
Où R est double entre -1 et 1.