it-swarm.com.de

Klicken Sie in Android auf der Aktionsleiste links neben dem Titel auf das Symbol

Ich möchte ein klickbares Symbol/eine Schaltfläche links vom Titel in der Aktionsleiste hinzufügen. So geht's? Nachfolgend der Code, mit dem ich der Aktionsleiste ein Such- und Einstellungssymbol hinzugefügt habe. Sie erscheinen auf der rechten Seite. Ich möchte jedoch ein neues Symbol links vom Titel hinzufügen. Wie mache ich das? 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"
    />

HAUPTAKTIVITÄT

     @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

Sie können Folgendes tun:

1- Erstellen Sie Ihren Dateinamen.xml und fügen Sie dann Toolbar hinzu.

2- Fügen Sie RelativeLayout im Tag Toolbar hinzu.

3- Fügen Sie Ihre Ansichten hinzu, d. H. (ImageButton, TextView, ...) 

Hinweis: Die TextView, die Sie hinzufügen, ist der Titel von Toolbar.

Beispielcode: Dateiname.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>

Ausgabe:

 see

6
Mahmoud Ayman

Sie können ein Symbol auf der linken Seite mit dem folgenden Code anzeigen.

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);

Aber es wird nicht anklickbar sein. Um links ein anklickbares Symbol zu erstellen, müssen Sie die Symbolleiste anstelle einer Aktionsleiste verwenden.

6
BuggyCoder

Empfohlener Weg

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_settings_24dp);// set drawable icon
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Handle icon click event

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case Android.R.id.home:
            Toast.makeText(this, "click..!!", Toast.LENGTH_SHORT).show();
            return true;
        default:
            return super.onOptionsItemSelected(item);

    }
}
2
Mayur Dabhi

Sie können das Standardnavigationssymbol (und die Schaltfläche der Ursache) auf folgende Weise ersetzen.

Definieren Sie die übliche Benutzeroberfläche mit der Symbolleiste in Ihrem XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical">

    <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">

        <Android.support.v7.widget.Toolbar
            Android:id="@id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"/>

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

    <!-- Here goes your UI -->

</LinearLayout>

Richten Sie dann Ihre Symbolleiste als ActionBar in der onCreate-Methode ein

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

    Toolbar toolbar = findViewById(R.id.toolbar);

    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); // Make toolbar show navigation button (i.e back button with arrow icon)

    toolbar.setNavigationIcon(R.drawable.custom_icon); // Replace arrow icon with our custom icon
}

Behandeln Sie die Navigationsschaltfläche "Zurück" in der onOptionsItemSelected-Methode:

@Override
    public boolean onOptionsItemSelected(MenuItem menuItem) {
        if (menuItem.getItemId() == Android.R.id.home) {

            // Do whatever you want

            return true;
        }

        return super.onOptionsItemSelected(menuItem);
    }

Das selbe in Kotlin

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(toolbar)

        supportActionBar?.setDisplayHomeAsUpEnabled(true) // Important step, we enable button on the left side of the toolbar

        toolbar.navigationIcon = getDrawable(R.drawable.custom_icon) // Here we change default navigation button icon

    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return when (item.itemId) {
            Android.R.id.home -> {
                doSomething() // Here we can perform any action
                true
            }
            else -> super.onOptionsItemSelected(item)
        }
    }

    private fun doSomething() {
        Toast.makeText(this, "Hello", Toast.LENGTH_LONG).show()
    }
}

Ergebnis: Android Toolbar add icon before title

2
Sergey Pekar

Eine Sache ist, dass Titel und App-Symbol standardmäßig auf der linken Seite und nicht auf der rechten Seite angezeigt werden. Wenn Sie Ihre Symbole auf der linken Seite einfügen möchten, können Sie sie auf der linken Seite einfügen.

Schritt 1. Erstellen Sie ein benutzerdefiniertes Layout, das die Suche, das Symbol und Ihren Titel nach Belieben einstellt.

Schritt 2. Erstellen Sie ein ToolBar-Layout wie:

<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"/>

Schritt 3. blase dein benutzerdefiniertes Layout in die Symbolleiste auf:

@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

Ich lege immer gerne ein AppBarLayout an, mit dem ich die Art und Weise steuern kann, in der die Symbolleiste angezeigt wird

<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>

Auf diese Weise kann man mehr Elemente setzen und sie nach Belieben anordnen. Fügen Sie in diesem Fall ein linkes Symbol ein, um die Aktivität durch ein Fragment zu schließen.

Also im Fragment a das tun

 //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!!
}

Das Ergebnis wird in etwa so aussehen:

 enter image description here

Die Aktion "SALVAR" stelle ich über das aufgeblasene Menü

 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)
        }

    }

Menü XML-Layout 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>

Vergessen Sie nicht, setHasOptionsMenu (true) zu verwenden, um das Menü zu aktivieren.

0
Rafael Rocha

Da dies eine Ära von Android ist, müssen Sie sich für Toolbar entscheiden, damit Sie mithilfe von XML jede Art von Anpassung vornehmen können. Anstelle des Menüs würde ich vorschlagen, die Symbolleiste zu verwenden

<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>

Und durch Code können Sie mit Ereignissen umgehen

0
Reena