How to display and set click event on Back Arrow on Toolbar?

前端 未结 7 1049
-上瘾入骨i
-上瘾入骨i 2020-12-02 18:31

How can I set back arrow in Android toolbar and also apply click listener?

相关标签:
7条回答
  • 2020-12-02 18:44

    If you want to know when home is clicked is an AppCompatActivity then you should try it like this: Use this code :

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    

    Listen for click events on android.R.id.home like usual:

    @Override
    public boolean onOptionsItemSelected(MenuItem menuItem) {
        if (menuItem.getItemId() == android.R.id.home) {
             Intent intent = new Intent(CurrentActivity.this, MainActivity.class);
             startActivity(intent);
             finish();
        }
        return super.onOptionsItemSelected(menuItem);
    }
    
    0 讨论(0)
  • 2020-12-02 18:48

    First make one 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="@color/colorPrimary"
        local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        local:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    

    then include it in activity_main.xml like this way:

    <LinearLayout
        android:id="@+id/container_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    
        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar" />
    
    </LinearLayout>
    

    then in your MainActivity.java file, put this code:

    mToolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setTitle("MyTitle");
    

    To add listener on back press, use following method:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                // todo: goto back activity from here
    
                Intent intent = new Intent(CurrentActivity.this, MainActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                finish();
                return true;
    
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    
    0 讨论(0)
  • 2020-12-02 18:56
    Toolbar mToolbar= (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);    
    mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // perform whatever you want on back arrow click 
        }
    });
    

    // with lamda expression

    toolbar.setNavigationOnClickListener(view -> onBackPressed());
    
    0 讨论(0)
  • 2020-12-02 18:57

    Very simple code. Add inside onCreateView() method of activity

    To display icon

            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            getSupportActionBar().setDisplayShowTitleEnabled(false);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    

    and to add click listener

     toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                   // Put your click logic here
                }
            });
    
    0 讨论(0)
  • 2020-12-02 19:00

    Add this

     Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
     setSupportActionBar(toolbar);
     getSupportActionBar().setDisplayHomeAsUpEnabled(true);
     getSupportActionBar().setDisplayShowHomeEnabled(true);
    

    and in onOptionsItemSelected add this

     @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    

    Check this

    Display Back Arrow on Toolbar Android

    http://developer.android.com/intl/es/training/implementing-navigation/ancestral.html

    0 讨论(0)
  • 2020-12-02 19:04

    If you are using the default back button for android by using

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    

    Then override the onOptionsItemSelected like

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                //do whatever
                return true;
            default:
               return super.onOptionsItemSelected(item);
        }
    }
    
    0 讨论(0)
提交回复
热议问题