web-dev-qa-db-fra.com

Ajouter une icône à gauche du titre dans la barre d’action sous Android

Je veux ajouter une icône/un bouton cliquable à gauche du titre dans la barre d'action. Comment le faire? Voici le code avec lequel j'ai ajouté l'icône de recherche et de réglage dans la barre d'action. Ils apparaissent à droite. Mais je veux ajouter une nouvelle icône à la gauche du titre. Comment le faire? 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=".ui.home.activities.TransactionSearchActivity">

    <item
        Android:id="@+id/action_search"
        Android:icon="@Android:drawable/ic_menu_search"
        Android:title="search"
        app:actionViewClass="Android.support.v7.widget.SearchView"
        app:showAsAction="always" />

    <item Android:id="@+id/action_setting"
        Android:title="categories"
        Android:icon="@drawable/icon_settings_h"
        app:showAsAction="always"
    />

ACTIVITÉ PRINCIPALE

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        return true;
    }
5
sana baid

Vous pouvez faire ce qui suit:

1- Créez votre fichier nom_fichier.xml puis ajoutez Toolbar.

2- ajouter RelativeLayout dans la balise Toolbar.

3- ajoutez vos vues c'est-à-dire (ImageButton, TextView, ...) 

Remarque: La TextView que vous ajoutez est le titre de Toolbar.

Exemple de code: nom_fichier.xml

<Android.support.v7.widget.Toolbar
        Android:id="@+id/products_toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="@color/colorPrimaryDark"
        app:layout_collapseMode="pin"
        app:titleTextColor="@Android:color/white">

        <RelativeLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent">

            <TextView
                Android:id="@+id/toolbar_title"
                Android:layout_width="wrap_content"
                Android:layout_height="match_parent"
                Android:text="Title"
                Android:gravity="center"
                Android:textColor="@Android:color/white"
                Android:textSize="20dp"
                Android:textStyle="bold"
                Android:layout_alignParentStart="true"/>

            <ImageButton
                Android:id="@+id/toolbar_button"
                Android:layout_width="wrap_content"
                Android:layout_height="match_parent"
                Android:src="@drawable/ic_icon_24dp"
                style="@style/Widget.AppCompat.Button.Borderless"
                Android:layout_alignParentEnd="true"/>

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

Sortie:

 see

6
Mahmoud Ayman

Vous pouvez afficher une icône à gauche en utilisant le code suivant.

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | 
ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_USE_LOGO);
actionBar.setIcon(R.drawable.ic_launcher);

Mais ce ne sera pas cliquable. Pour créer une icône cliquable à gauche, vous devez utiliser la barre d'outils au lieu d'une barre d'actions.

6
BuggyCoder

Une chose est que, par défaut, le titre et l'icône de l'application sont définis à gauche et autres que les icônes envoyées à droite. Si vous souhaitez ajouter vos icônes dans le côté gauche, il existe un moyen de les utiliser dans le côté gauche, à savoir:

étape 1. créer une mise en page personnalisée avec recherche, icône de réglage et votre titre comme vous le souhaitez.

étape 2. créer une mise en page de barre d'outils comme:

<Android.support.v7.widget.Toolbar
                Android:id="@+id/toolbar"
                Android:layout_width="match_parent"
                Android:layout_height="?attr/actionBarSize"
                Android:titleTextColor="#ffffff"
                Android:background="#ECA539"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

étape 3. gonflez votre mise en page personnalisée dans la barre d'outils de la manière suivante:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
initToolbar();

}
private void initToolBar() {
setSupportActionBar(toolbar);
    View customlayout= getLayoutInflater().inflate(R.layout.custom_layout, null);
    toolbar.addView(logo);
}
1
singh.indolia

J'aime toujours mettre un AppBarLayout que je peux contrôler la façon dont la barre d'outils apparaît

<Android.support.design.widget.AppBarLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:theme="@style/AppTheme.AppBarOverlay">
        <RelativeLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent">
        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbarAddPlan"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="?attr/colorPrimary"
            Android:layout_marginLeft="50dp"
            app:popupTheme="@style/AppTheme.PopupOverlay" >

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

            <ImageButton
                Android:id="@+id/btnAddPlanTourClose"
                style="@style/Widget.AppCompat.Button.Borderless"
                Android:layout_width="45dp"
                Android:layout_height="45dp"
                Android:layout_alignParentLeft="true"
                Android:layout_alignParentStart="true"
                Android:layout_centerVertical="true"
                Android:src="@drawable/close_circle_outline" />
        </RelativeLayout>
</Android.support.design.widget.AppBarLayout>

De cette façon, vous pouvez mettre plus d'éléments et les arranger comme je le veux. Dans ce cas, insérez une icône de gauche pour fermer l’activité par un fragment.

Donc dans le fragment faire cela

 //That is in the Fragment
setupToolbar(R.id.toolbarAddPlan,getString(R.string.addPlanTour),true)





//It is in na Kotlin Extansion file.



 inline fun Fragment.setupToolbar(@IdRes id: Int, title:String?= null, upNavigation: Boolean = false) : ActionBar {

    val activityCompat = activity as AppCompatActivity
    val toolbar = activity?.findViewById<Toolbar>(id)
    activityCompat.setSupportActionBar(toolbar)
    if(title != null){
        activityCompat.supportActionBar?.title = title
    }
    activityCompat.supportActionBar?.setHomeButtonEnabled(true)
    return activityCompat.supportActionBar!!
}

Le résultat sera quelque chose comme ça:

 enter image description here

L'action "SALVAR" que j'ai mise via le menu inflat

 override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
        super.onCreateOptionsMenu(menu, inflater)
        inflater?.inflate(R.menu.menu_add_plan_tour,menu)
    }

    override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        return when (item?.itemId){
            R.id.menuPlanTourSave ->{
                true
            }else ->return super.onOptionsItemSelected(item)
        }

    }

Disposition XML du menu src/menu/menu_add_plan_tour.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">
    <!-- "Mark Favorite", should appear as action button if possible -->
    <item
        Android:id="@+id/menuPlanTourSave"
        Android:title="@string/btnSave"
        Android:tooltipText="@string/btnSave"
        Android:contentDescription="@string/btnSave"
        app:showAsAction="always|withText">
        <TextView
            Android:text="@string/btnSave"
            Android:textSize="15dp"
            Android:textColor="@color/colorPrimaryLight"
            />


    </item>
</menu>

Et n'oubliez pas d'utiliser setHasOptionsMenu (true) pour activer le menu.

0
Rafael Rocha

Comme il s'agit d'une ère mise à jour d'Android, vous devez utiliser la barre d'outils pour pouvoir effectuer tout type de personnalisation à l'aide de XML. Au lieu d'utiliser le menu, je suggère d'utiliser la barre d'outils

<Android.support.v7.widget.Toolbar
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_alignParentBottom="true"
    Android:background="#ffffa302"
    Android:minHeight="@Android:dimen/notification_large_icon_height">

    <ImageButton
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:id="@+id/imageButton"
        Android:layout_gravity="left"
        Android:drawable="@drawable/pinterest_pin"
        Android:clickable="true"/>

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

Et par le code, vous pouvez gérer l'événement

0
Reena