web-dev-qa-db-fra.com

Comment ajouter une image dans la barre d'outils

Je suis cet exemple pour créer mon application maintenant j'essaie d'ajouter une image dans ma barre d'outils mais l'image ne s'affiche pas. J'essaie de définir le logo de mon application. Voici le code et la barre d'outils xml. moi quelle est erreur?

toolbar.xml

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

    <ImageView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:background="@drawable/toolbartitle"
        />

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

MainActivity.Java

public class MainActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {

    private static String TAG = MainActivity.class.getSimpleName();

    private Toolbar mToolbar;
    private FragmentDrawer drawerFragment;
    private String chng;
    private Intent i;
    public SearchView searchView;
    public SearchManager searchManager;

    // Alert Dialog Manager
    AlertDialogManager alert = new AlertDialogManager();

    // Session Manager Class
    SessionManager session;

    private String id;
    private boolean b;
    private String rasa;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        session = new SessionManager(getApplicationContext());
        id = getIntent().getStringExtra("id");
        System.out.println("MAIN ID : " + id);
       /* i=getIntent();
        chng=i.getStringExtra("Changes");*/

      //  Toast.makeText(getApplicationContext(),chng,Toast.LENGTH_LONG).show();
       mToolbar = (Toolbar) findViewById(R.id.toolbar);

        setSupportActionBar(mToolbar);
       getSupportActionBar().setDisplayShowHomeEnabled(false);
        getSupportActionBar().setDisplayShowTitleEnabled(false);

        drawerFragment = (FragmentDrawer)
                getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawerLayout),mToolbar);
        drawerFragment.setDrawerListener(this);
        displayView(0);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

Voici comment ma barre d'outils montre maintenant

enter image description here

14
Aditya Vyas-Lakhan

à la place, vous pouvez définir votre image comme arrière-plan textview. utilisez Android:background="@drawable/toolbartitle". et setTitle ("") dans votre code.

votre barre d'outils finale ressemblera à

 <?xml version="1.0" encoding="utf-8"?>
<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:local="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:minHeight="?attr/actionBarSize"
    Android:background="@drawable/toolbartitle"
    local:theme="@style/MyMaterialTheme.Base"
    local:popupTheme="@style/ThemeOverlay.AppCompat.Light" >


    </Android.support.v7.widget.Toolbar>
7
H Raval
  <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="@color/color_blue"
            app:popupTheme="@style/AppTheme.PopupOverlay">

            <ImageView
                Android:id="@+id/tv_header_title"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_gravity="center"
                Android:src="@mipmap/header_title" />
        </Android.support.v7.widget.Toolbar>

Vous pouvez définir l'événement du bouton également par cette méthode ...

 public static void showToolBar(Toolbar toolbar,
                                   final AppCompatActivity activity) {
        activity.setSupportActionBar(toolbar);
        activity.getSupportActionBar().setDisplayShowTitleEnabled(false);
        @SuppressWarnings("deprecation")
        Drawable drawable = activity.getResources().getDrawable(
                R.mipmap.back_icon);
        drawable.setColorFilter(
                activity.getResources().getColor(R.color.color_white),
                Android.graphics.PorterDuff.Mode.SRC_ATOP);
        activity.getSupportActionBar().setHomeAsUpIndicator(drawable);
        toolbar.setBackgroundColor(activity.getResources().getColor(
                R.color.color_blue));
        activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                activity.finish();
            }
        });
    }
19
Arth Tilva

Utilisez l’affichage du logo sur la barre d’action.

    getSupportActionBar().setLogo(R.drawable.logo);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
8
kris larson

Vous avez manqué de montrer la source 

Android:src="@drawable/yourImage"

si cela ne fonctionne pas, essayez d’ajouter de la largeur et de la hauteur au lieu d’envelopper le contenu.

Android:layout_width="50dp"
Android:layout_height="50dp"  
1
Hari Krishnan

Vous devez définir l'attribut image src plutôt que définir l'arrière-plan d'imageview pouvant être dessiné.

<ImageView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:src="@drawable/toolbartitle"
    />
0
fractalwrench

C'était une erreur de ma part, je vérifiais avec la barre d'outils personnalisée xml, mais j'ai déjà une barre d'outils dans mon activity_main.xml..Espoir que ma réponse aidera aussi les autres

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical">

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">

        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            style="@style/MyToolBarStyle.Base"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:background="@drawable/toolbartitle"
            Android:minHeight="?attr/actionBarSize" />
    </LinearLayout>

    <Android.support.v4.widget.DrawerLayout
        Android:id="@+id/drawerLayout"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">


        <!-- activity view -->
        <!-- Framelayout to display Fragments -->
        <FrameLayout
            Android:id="@+id/container_body"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent" />

        <!-- navigation drawer -->
        <fragment
            Android:id="@+id/fragment_navigation_drawer"
            Android:name="info.androidhive.materialdesign.activity.FragmentDrawer"
            Android:layout_width="@dimen/nav_drawer_width"
            Android:layout_height="match_parent"
            Android:layout_gravity="start"
            app:layout="@layout/fragment_navigation_drawer"
            tools:layout="@layout/fragment_navigation_drawer" />

    </Android.support.v4.widget.DrawerLayout>

</LinearLayout>
0
Aditya Vyas-Lakhan