web-dev-qa-db-fra.com

Comment créer un bouton dans la barre d’action dans android

Je travaille sur Android où j’ai besoin d’un bouton dans la barre d’action. C’est mon activité et Java. Donc, j’ai besoin d’un bouton à droite de ma barre d’outils Merci d’avance.

content_b2_bdeliveries.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.ideabiz.riderapplication.ui.B2BDeliveriesActivity"
tools:showIn="@layout/activity_b2_bdeliveries">
//remaining code;
</LinearLayout>

activity_b2_bdeliveries.xml:

<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout 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"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
tools:context="com.ideabiz.riderapplication.ui.B2BDeliveriesActivity">

<Android.support.design.widget.AppBarLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:theme="@style/AppTheme.AppBarOverlay">

</Android.support.design.widget.AppBarLayout>

<include layout="@layout/content_b2_bdeliveries" />

</Android.support.design.widget.CoordinatorLayout>

B2BDeliveriesActivity.Java:

public class B2BDeliveriesActivity extends AppCompatActivity {
private final String TAG_NAME="B2BActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_b2_bdeliveries);
    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    ActionBar actionBar = getSupportActionBar();
    //Log.d(TAG_NAME,actionBar.toString());
    if (actionBar != null) {
        try {
            actionBar.setDisplayHomeAsUpEnabled(true);
            } catch (Exception e) {
                Crashlytics.logException(e);
                Log.d(TAG_NAME, "Null Pointer from setDisplayHomeAsUpEnabled" + e.getMessage());
                Utilities.issueTokenUpload("Null Pointer from setDisplayHomeAsUpEnabled" + e, sharedPreferences.getInt("tripId", 999999), sharedPreferences.getString("driverPhoneNo", "9999999999"), sharedPreferences.getString("driverName", "default"), getResources().getString(R.string.version));
            }
    }
}

sample requirement picture

18
// create an action bar button
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.mymenu, menu);
    return super.onCreateOptionsMenu(menu);
}

// handle button activities
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.mybutton) {
    // do something here
    }
    return super.onOptionsItemSelected(item);
}

et votre fichier mymenu.xml devrait se trouver dans le répertoire res/menu (si vous n'avez pas res/menu, créez simplement un répertoire nommé "menu" dans res) et ressemblez à ceci:

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
  xmlns:app="http://schemas.Android.com/apk/res-auto">
<item
    Android:id="@+id/mybutton"
    Android:title=""
    app:showAsAction="always"
    Android:icon="@drawable/mybuttonicon"
    />
</menu>
54
Onur Çevik

Si vous souhaitez personnaliser l'interface utilisateur de votre ActionBar, vous pouvez utiliser Toolbar comme ActionBar. Voici les étapes pour faire la même chose:

  1. Ajoutez le code ci-dessous en tant qu'enfant d'AppBarLayout dans votre mise en page d'activité XML.

    <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize" >
    
            <LinearLayout
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:weightSum="1">
    
                <TextView
                    Android:id="@+id/title"
                    Android:layout_width="0dp"
                    Android:layout_height="wrap_content"
                    Android:layout_weight="1"
                    Android:text="ActionBar Title"/>
    
                <Button
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content" />
    
            </LinearLayout>
    
        </Android.support.v7.widget.Toolbar>
    
  2. Faites de votre barre d’outils un ActionBar en ajoutant le code ci-dessous à votre méthode Activity onCreate ().

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    
  3. Dans AndroidManifest.xml, ajoutez le thème suivant à votre activité:

    Android:theme="@style/AppTheme.NoActionBar"
    
  4. Dans styles.xml, ajoutez le code suivant:

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
    
6
Gautam Malik

Quelqu'un avait déjà répondu à cette question

Vous avez deux étapes pour le faire:

  1. Créer un menu dans res/menu (Nommez-le my_menu.xml)

    <menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >
    <item
        Android:id="@+id/action_cart"
        Android:icon="@drawable/cart"
        Android:orderInCategory="100"
        Android:showAsAction="always"/> 
    </menu>
    
  2. Remplacer onCreateOptionsMenu et gonfler le menu

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.my_menu, menu);
    return true;
    }
    

Visite: Comment ajouter un bouton dans ActionBar (Android)?

4
Ahmad Payan

Créez un fichier XML pour votre menu dans res/menu répertoire (menu_main.xml dans ce cas):

<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="com.example.rashish.myapplication.MainActivity">
    <item
        Android:id="@+id/action_settings"
        Android:orderInCategory="100"
        Android:title="Button title"
        Android:icon="@drawable/buttonicon"
        app:showAsAction="never" />
</menu>

ajoutez ensuite ces méthodes dans votre classe d'activité:

@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;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here.
    int id = item.getItemId();

    if (id == R.id.action_settings) {
        //process your onClick here
        return true;
    }

    return super.onOptionsItemSelected(item);
}
0
Ashish Ranjan

sa description correctement à https://developer.Android.com/guide/topics/ui/menus.html#xml . Vous pouvez créer un fichier menu.xml dans le répertoire "menu", qui se situe au même niveau que les répertoires "drawable" et "layout"

0
tibbi