web-dev-qa-db-fra.com

Titre, etc. n'apparaissant pas dans la barre d'outils Android

Je viens d'ajouter une barre d'outils Android à une application sur laquelle je travaille. L'emplacement de la barre d'outils fonctionne correctement avec la disposition de la barre d'outils qui apparaît en haut de l'écran. Cependant, la barre d'outils apparaît sous la forme d'une barre de couleur vierge ... le titre de l'application et l'icône de débordement n'apparaissent pas dans la barre d'outils. Des idées sur comment réparer?

ToolbarActivity.Java:

public abstract class ToolbarActivity extends ActionBarActivity {

private Toolbar toolbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    if (toolbar != null) {
        setSupportActionBar(toolbar);
        getSupportActionBar().setHomeButtonEnabled(true); 
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    toolbar.setTitle("app name");
    }
}

toolbar.xml:

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/toolbar"
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:minHeight="?attr/actionBarSize"
Android:theme="@style/ThemeOverlay.AppCompat.Dark"
Android:background="@color/ColorPrimary" >
</Android.support.v7.widget.Toolbar>

menu_main.xml:
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
tools:context=".MainActivity">
<item Android:id="@+id/action_settings"
    Android:title="@string/action_settings"
    Android:orderInCategory="100"
    app:showAsAction="always" />
</menu>

style.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
      <item name="windowActionBar">false</item>
      <item name="Android:windowNoTitle">true</item>
      <item name="colorPrimary">@color/ColorPrimary</item>
      <item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
</style>
15
AJW

EDIT: Ok, donc cela doit être réglé de manière complètement différente. J'ai supposé (parce que je n'avais pas encore beaucoup travaillé avec ToolBar que lors de l'utilisation de setActionBar(toolbar), la ToolBar personnalisée était automatiquement ajoutée à l'affichage du contenu, mais ce n'était pas le cas.

Le gros problème est donc que la ToolBar n'est jamais ajoutée à la vue de contenu actuelle et ne sera donc visible jamais tant que vous n'aurez pas ajouté la ToolBar à la vue de contenu actuelle.

Il existe différentes approches, mais je ne montrerai que l'une d'entre elles.

Au lieu d'avoir un fichier toolbar.xml, vous devez ajouter la ToolBar directement dans le fichier de mise en page de la Activity.

Voici un exemple de la classe Activity et du code XML à associer à la Activity:

MainActivity.Java

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.toolbar);
        if(toolbar != null) {
            setSupportActionBar(toolbar);
            getSupportActionBar().setTitle("My custom toolbar!");
            getSupportActionBar().setHomeButtonEnabled(true);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }
    }
}

activity_main.xml

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="100dp"
        Android:background="@Android:color/holo_red_light"
        Android:minHeight="100dp">

    </Android.support.v7.widget.Toolbar>

</RelativeLayout>

Votre fichier styles.xml est correct tel quel.

Il est important de noter qu'après avoir défini votre ActionBar sur la ToolBar personnalisée, vous utilisez les méthodes par défaut pour modifier l'apparence de ActionBar. Par exemple, la définition du titre doit être définie à partir de getSupportActionBar().setTitle() et non à partir de toolbar.setTitle().

27
Darwind

Tutoriel: http://www.viralandroid.com/2015/08/Android-toolbar-example.html

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
  <!-- Customize your theme here. -->
</style>

fichier de mise en page

<Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:minHeight="?attr/actionBarSize"
        Android:background="#2196F3"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">
    </Android.support.v7.widget.Toolbar>

Java

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
2
Half Moon

Dans manifeste, ajoutez ce qui suit ...

 <activity Android:name=".Activity.ToolbarActivity"
            Android:label="@string/yourStringTitle"
            />

J'espère que cela t'aides

0
Richimf