टूलबार पर बैक एरो प्रदर्शित करें


496

मैं से पलायन कर रहा हूँ ActionBarकरने के लिए Toolbarअपने आवेदन में। लेकिन मुझे नहीं पता है कि बैक एरो पर क्लिक इवेंट को कैसे प्रदर्शित और सेट करना है Toolbarजैसे मैंने किया था Actionbar

यहाँ छवि विवरण दर्ज करें

के साथ ActionBar, मैं फोन करता हूं mActionbar.setDisplayHomeAsUpEnabled(true)। लेकिन इस तरह की कोई विधि नहीं है।

क्या किसी ने कभी इस स्थिति का सामना किया है और किसी तरह इसे हल करने का एक तरीका पाया है?


कैसे के बारे में stackoverflow.com/a/29809691/1644301
mDroidd

उपयोग getSupportActionBar () उदाहरण यहाँ freakyjolly.com/how-to-add-back-arrow-in-android-activity
संहिता जासूस

जवाबों:


900

यदि आप एक का उपयोग कर रहे हैं ActionBarActivityतो आप एंड्रॉइड को Toolbarइस ActionBarतरह उपयोग करने के लिए कह सकते हैं :

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

और फिर फोन करता है

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

काम करेगा। आप यह भी उपयोग कर सकते हैं कि ActionBarActivitiesआपके साथ संलग्न Fragments में इसे इस तरह से उपयोग कर सकते हैं:

((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((ActionBarActivity) getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);

यदि आप उपयोग नहीं कर रहे हैं ActionBarActivitiesया यदि आप वापस तीर प्राप्त करना चाहते हैं जो Toolbarआपके सेट पर नहीं है SupportActionBarतो आप निम्नलिखित का उपयोग कर सकते हैं:

mActionBar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_back));
mActionBar.setNavigationOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
       //What to do on back clicked
   }
});

यदि आप उपयोग कर रहे हैं android.support.v7.widget.Toolbar, तो आपको निम्नलिखित कोड को अपने साथ जोड़ना चाहिए AppCompatActivity:

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

12
Googles आधिकारिक सामग्री डिजाइन आइकन रेपो github.com/google/material-design-icons/blob/master/navigation/…
MrEngineer13

70
यदि आप appcompat-v7 (21.0.3 या उच्चतर) के नवीनतम संस्करण का उपयोग कर रहे हैं, तो आप बैक एरो ड्रॉएबल के लिए R.drawable.abc_ic_ab_back_mtrl_am_alpha का उपयोग कर सकते हैं, जो समर्थन लाइब्रेरी में शामिल है।
तेहो किम

23
कृपया ध्यान दें कि getResources ()। GetDrawable (...) पदावनत है। आपको इसके बजाय ContextCompat.getDrawable (संदर्भ, ...) का उपयोग करना चाहिए।
क्वेंटिन एस।

7
काम नहीं किया, न R.drawable.abc_ic_ab_back_mtrl_am_alphaतो मिल सकता है और न ही R.drawable.ic_action_back
हेनरिक डी सूसा

10
समर्थन पुस्तकालय से "वापस" आइकन पाने के लिए toolbar.setNavigationIcon(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);
Bolein95

215

मैं बहुत सारे उत्तर देखता हूं लेकिन यहां मेरा है जिसका उल्लेख पहले नहीं किया गया है। यह एपीआई 8+ से काम करता है।

public class DetailActivity extends AppCompatActivity

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

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

    // add back arrow to toolbar
    if (getSupportActionBar() != null){
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // handle arrow click here
    if (item.getItemId() == android.R.id.home) {
        finish(); // close this activity and return to preview activity (if there is any)
    }

    return super.onOptionsItemSelected(item);
}

3
यह तभी काम करता है जब आप टूलबार को एक्शनबार के रूप में सेट करते हैं। यह स्टैंडअलोन टूलबार के लिए नहीं है।
कफ्स

20
onOptionItemSelected()इस के लिए Upvote पूरा करता है जो MrEngineer13 ने अपने उत्तर में कवर नहीं किया है।
अतुल

2
धन्यवाद यह मेरे लिए काम किया। क्लिक श्रोता का उपयोग करने से बेहतर लगता है, मैं वास्तव में स्टैंडअलोन टूलबार के बारे में परवाह नहीं करता
हूं

मैं तीर का रंग कैसे बदल सकता हूं?
दिमित्री

मुझे "टूलबार" टिप्पणी लाइन के तहत लाइनों की आवश्यकता नहीं थी, अच्छा काम करता है।
Hack06

173

इसे प्राप्त करने के कई तरीके हैं, यहाँ मेरा पसंदीदा है:

लेआउट:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:navigationIcon="?attr/homeAsUpIndicator" />

गतिविधि:

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

    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // back button pressed
        }
    });

13
इस सवाल के अधिकांश अन्य सुझावों की तुलना में विषय विशेषता का उपयोग करना बहुत बेहतर है
पेड्रो लौरेइरो

3
उपयोग करने के बजाय setNavigationOnClickListener()आप case android.R.id.home:'onOptionsItemSelected ()' को अंदर जोड़ सकते हैं ।
यूजीन

1
case android.R.id.homeमेरे लिए काम नहीं किया। इसलिए थोड़ी देर की खोज के बाद, आपके उत्तर ने चाल चली .. धन्यवाद।
डेग्य १

यह सबसे प्रामाणिक समाधान है, खासकर यदि आप एंड्रॉइड सिस्टम के डिफ़ॉल्ट बैक आइकन का उपयोग करना चाहते हैं।
नौमान असलम

toolbar.setNavigationOnClickListener {onBackPressed ()} का उपयोग करके
filthy_wizard

74

आप उपकरण बार setNavigationIcon विधि का उपयोग कर सकते हैं। Android डॉक्टर

mToolBar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);

mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        handleOnBackPress();
    }
});

1
क्या आप अपने उत्तर में कुछ स्पष्टीकरण जोड़ सकते हैं? एसओ पर कोड-ही जवाब दिए गए हैं।
सम्मानित करें

1
कृपया ध्यान दें कि विधि setNavigationOnClickListener()को एपीआई स्तर 21 और उससे अधिक में जोड़ा गया है
अली मेहरपुर

3
R.drawable.abc_ic_ab_back_mtrl_am_alpha अब 23.2.0 के समर्थन में चला गया है, इसके बजाय स्वीकृत उत्तर का उपयोग करें।
मिलन

25

यदि आप कोई रिवाज नहीं बनाना चाहते हैं Toolbar, तो आप ऐसा कर सकते हैं

public class GalleryActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        ...  
        getSupportActionBar().setTitle("Select Image");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            finish();
        }
        return super.onOptionsItemSelected(item);
    }
}                     

तुम में AndroidManifest.xml

<activity
    android:name=".GalleryActivity"
    android:theme="@style/Theme.AppCompat.Light">        
</activity>

आप इसे सभी गतिविधियों पर लागू करने के लिए टैग android:theme="@style/Theme.AppCompat.Light"करने के <aplication>लिए भी डाल सकते हैं

यहाँ छवि विवरण दर्ज करें


2
के लिए धन्यवादif (item.getItemId() == android.R.id.home)
Adizbek Ergashev

22
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setNavigationIcon(R.drawable.back_arrow); // your drawable
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed(); // Implemented by activity
        }
    });

और एपीआई 21+ के लिए android:navigationIcon

<android.support.v7.widget.Toolbar
    android:navigationIcon="@drawable/back_arrow"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"/>

स्वीकृत उत्तर होना चाहिए।
एंटोन मालिशेव

17

मैंने Google डेवलपर दस्तावेज़ से इस पद्धति का उपयोग किया है :

@Override
public void onCreate(Bundle savedInstanceState) {
  ...
  getActionBar().setDisplayHomeAsUpEnabled(true);
}

यदि आपको एक शून्य सूचक अपवाद मिलता है तो यह विषय पर निर्भर कर सकता है। मैनिफ़ेस्ट में किसी भिन्न थीम का उपयोग करके या वैकल्पिक रूप से उपयोग करने का प्रयास करें:

@Override
public void onCreate(Bundle savedInstanceState) {
  ...
  getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

तब प्रकट में, जहां मैंने वर्तमान गतिविधि के लिए मूल गतिविधि निर्धारित की है:

<activity
        android:name="com.example.myapp.MyCurrentActivity"
        android:label="@string/title_activity_display_message"
     android:parentActivityName="com.example.myfirstapp.MainActivity" >
    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.myapp.MyMainActivity" />
</activity>

उम्मीद है इससे आपको मदद मिलेगी!


1
Google डॉक्स लिंक और getSupportActionBar()काम करता है। धन्यवाद!
रिक

15

यदि आप कर रहे थे का उपयोग कर AppCompatActivityऔर इसे प्रयोग नहीं के रास्ते नीचे चले गए हैं, क्योंकि आप स्वत: नहीं प्राप्त करना चाहता था ActionBarकि यह प्रदान करता है, क्योंकि आप को अलग करना चाहते हैं Toolbar, अपने भौतिक डिज़ाइन जरूरतों और की वजह से CoordinatorLayoutया AppBarLayoutफिर, इस पर विचार करें:

आप अभी भी इसका उपयोग कर सकते हैं AppCompatActivity, आपको इसका उपयोग बंद करने की आवश्यकता नहीं है ताकि आप <android.support.v7.widget.Toolbar>अपने xml में उपयोग कर सकें । बस एक्शन बार शैली को इस प्रकार बंद करें :

सबसे पहले, NoActionBar विषयों में से एक शैली प्राप्त करें जो आप में पसंद करते हैं styles.xml, मुझे यह Theme.AppCompat.Light.NoActionBarपसंद है:

<style name="SuperCoolAppBarActivity" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">@color/primary_dark</item>
    ...
    ...
</style>

अपने ऐप के प्रदर्शन में, आपके द्वारा परिभाषित बाल शैली विषय चुनें, जैसे:

    <activity
        android:name=".activity.YourSuperCoolActivity"
        android:label="@string/super_cool"
        android:theme="@style/SuperCoolAppBarActivity">
    </activity>

आपकी गतिविधि Xml में, यदि टूलबार को इस तरह परिभाषित किया गया है:

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

फिर, और यह महत्वपूर्ण हिस्सा है, आप AppCompatActivity के लिए समर्थन एक्शन बार सेट कर रहे हैं जिसे आप बढ़ा रहे हैं, ताकि आपके xml में टूलबार, एक्शन बार बन जाए । मुझे लगता है कि यह एक बेहतर तरीका है, क्योंकि आप बस उन कई चीजों को कर सकते हैं जो एक्शनबार अनुमति देता है, जैसे कि मेनू, स्वचालित गतिविधि शीर्षक, आइटम चयन से निपटने, आदि पर कस्टम क्लिक हैंडलर जोड़ने के लिए सहारा के बिना।

आपकी गतिविधि के ऑनक्रिट ओवरराइड में, निम्नलिखित करें:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_super_cool);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    setSupportActionBar(toolbar);
    //Your toolbar is now an action bar and you can use it like you always do, for example:
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} 

8
MyActivity extends AppCompatActivity {

    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...
        toolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        toolbar.setNavigationOnClickListener(arrow -> onBackPressed());
    }

आप रेट्रोलंबा का उपयोग कर सकते हैं।
Artemiy

यह वही है जो मेरे पास है और इसका काम नहीं है। खिचड़ी भाषा यह पता लगा।
गंदी_ छिपकली

7

टूलबार पर बैक बटन दिखाने का सरल और आसान तरीका

इस कोड को onCreate मेथड में पेस्ट करें

 if (getSupportActionBar() != null){

            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }

इस ओवरराइड विधि को ऑनक्रिएट विधि के बाहर पेस्ट करें

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

        finish();
    }
    return super.onOptionsItemSelected(item);
}

7

कोटलिन में यह होगा

private fun setupToolbar(){
    toolbar.title = getString(R.string.YOUR_TITLE)
    setSupportActionBar(toolbar)
    supportActionBar?.setDisplayHomeAsUpEnabled(true)
    supportActionBar?.setDisplayShowHomeEnabled(true)
}

// don't forget click listener for back button
override fun onSupportNavigateUp(): Boolean {
    onBackPressed()
    return true
}

6

आसानी से आप इसे कर सकते हैं।

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

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

क्रेडिट: https://freakycoder.com/android-notes-24-how-to-add-back-button-at-toolbar-941e6577418e


5

में AppCompatActivityउदाहरण के लिए आप कर सकते हैं

public class GrandStatActivity extends AppCompatActivity {

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

    @Override
    public void onResume() {
        super.onResume();

        // Display custom title
        ActionBar actionBar = this.getSupportActionBar();
        actionBar.setTitle(R.string.fragment_title_grandstats);

        // Display the back arrow
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }

    // Back arrow click event to go to the parent Activity
    @Override
    public boolean onSupportNavigateUp() {
        onBackPressed();
        return true;
    }

}

4

उस गतिविधि के लिए अपनी मैनिफ़ेस्ट फ़ाइल में जहाँ आप बैक बटन जोड़ना चाहते हैं, हम प्रॉपर्टी का उपयोग करेंगे android: parentActivityName

        <activity
        android:name=".WebActivity"
        android:screenOrientation="portrait"
        android:parentActivityName=".MainActivity"
        />

पुनश्च यह विशेषता एपीआई स्तर 16 में पेश की गई थी।


3

यह पूरी तरह से काम किया

public class BackButton extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chat_box);
        Toolbar chatbox_toolbar=(Toolbar)findViewById(R.id.chat_box_toolbar);
        chatbox_toolbar.setTitle("Demo Back Button");
        chatbox_toolbar.setTitleTextColor(getResources().getColor(R.color.white));
        setSupportActionBar(chatbox_toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        chatbox_toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //Define Back Button Function
            }
        });
    }
}

3

सबसे पहले, आपको टूलबार को इनिशियलाइज़ करने की आवश्यकता है:

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

फिर एक्शन बार से बैक बटन पर कॉल करें:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}

2

यदि आप एक टूलबार पर पीछे तीर प्राप्त करना चाहते हैं जो आपके SupportActionBar के रूप में सेट नहीं है:

(Kotlin)

val resId = getResIdFromAttribute(toolbar.context, android.R.attr.homeAsUpIndicator)
toolbarFilter.navigationIcon = ContextCompat.getDrawable(toolbar.context, resId)
toolbarFilter.setNavigationOnClickListener { fragmentManager?.popBackStack() }

विशेषताओं से रेस पाने के लिए:

@AnyRes
fun getResIdFromAttribute(context: Context, @AttrRes attr: Int): Int {
    if (attr == 0) return 0
    val typedValueAttr = TypedValue()
    context.theme.resolveAttribute(attr, typedValueAttr, true)
    return typedValueAttr.resourceId
}

1

लेआउट फ़ोल्डर में गतिविधि के xml में इसे जोड़ें:

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

टूलबार को क्लिक करने योग्य बनाएं, इन्हें ऑनक्रिट विधि में जोड़ें:

Toolbar toolbar = (Toolbar) findViewById(R.id.prod_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

1

संभवतः आपकी थीम से अप आइकन प्राप्त करने के लिए एक अधिक विश्वसनीय तरीका है (यदि आपके एक्शन बार के रूप में टूलबार का उपयोग नहीं किया जा रहा है):

toolbar.navigationIcon = context.getDrawableFromAttribute(R.attr.homeAsUpIndicator)

थीम विशेषता को एक ड्रॉबल में बदलने के लिए मैंने एक एक्सटेंशन फ़ंक्शन का उपयोग किया:

fun Context.getDrawableFromAttribute(attributeId: Int): Drawable {
    val typedValue = TypedValue().also { theme.resolveAttribute(attributeId, it, true) }
    return resources.getDrawable(typedValue.resourceId, theme)
}

0

यदि आप ActionBarDrawerToggle के साथ DrawerLayout का उपयोग कर रहे हैं , तो मेनू बटन (और इसके विपरीत) के बजाय बैक बटन दिखाने के लिए , आपको अपनी गतिविधि में इस कोड को जोड़ने की आवश्यकता है:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.application_name, R.string.application_name);
    mDrawerLayout.addDrawerListener(mDrawerToggle);

    mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_arrow_back_white_32dp);
    mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onBackPressed(); // Or you can perform some other action here when Back button is clicked.
        }
    });
    mDrawerToggle.syncState();
    // ...
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mDrawerToggle.onOptionsItemSelected(item))
        return true;

    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
        // ...
    }

    return super.onOptionsItemSelected(item);
}

public void showBackInToolbar(boolean isBack) {
    // Remove next line if you still want to be able to swipe to show drawer menu.
    mDrawerLayout.setDrawerLockMode(isBack ? DrawerLayout.LOCK_MODE_LOCKED_CLOSED : DrawerLayout.LOCK_MODE_UNLOCKED);
    mDrawerToggle.setDrawerIndicatorEnabled(!isBack);
    mDrawerToggle.syncState();
}

इसलिए जब आपको मेनू बटन के बजाय बैक बटन दिखाने की आवश्यकता हो , तो showBackInToolbar (ट्रू) को कॉल करें , और यदि आपको मेनू बटन की आवश्यकता है , तो showBackInToolbar (गलत) कॉल करें

आप यहाँ पर बैक एरो (ic_arrow_back_white_32dp) उत्पन्न कर सकते हैं , क्लिपआर्ट सेक्शन में arrow_back खोजें (8dp पैडिंग के साथ डिफ़ॉल्ट 32dp का उपयोग करें)। बस आपको मनचाहा रंग चुनें।


0

आप हमेशा अपने में एक Relative layoutया एक जोड़ सकते हैं और टूलबार में कहीं भी बैक आइकन या क्लोज आइकन के लिए एक छवि दृश्य रख सकते हैंLinear LayoutToolbar

उदाहरण के लिए मैंने अपने टूलबार में सापेक्ष लेआउट का उपयोग किया है

 <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar_top"
                android:layout_width="match_parent"
                android:layout_height="35dp"
                android:minHeight="?attr/actionBarSize"
                android:nextFocusDown="@id/netflixVideoGridView"
                app:layout_collapseMode="pin">

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">


                    <TextView

                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Myflix"
                        android:textAllCaps="true"
                        android:textSize="19sp"
                        android:textColor="@color/red"
                        android:textStyle="bold" />


                    <ImageView
                        android:id="@+id/closeMyFlix"
                        android:layout_alignParentRight="true"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_vertical"
                        app:srcCompat="@drawable/vector_close" />


                </RelativeLayout>

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

और यह इस तरह दिखता है:

यहाँ छवि विवरण दर्ज करें

आप उस गतिविधि या खंड से छवि दृश्य पर क्लिक श्रोता जोड़ सकते हैं।

  closeMyFlix.setOnClickListener({
            Navigator.instance.showFireTV(  activity!!.supportFragmentManager)
        })

0

कोटलिन के साथ यह बन गया:

xml:

<include
android:id="@+id/tbSignToolbar "
layout="@layout/toolbar_sign_up_in"/>

आपकी गतिविधि में: -

setSupportActionBar(tbSignToolbar as Toolbar?)//tbSignToolbar :id of your toolbar 
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)

0

अगर आप JetPack नेविगेशन का उपयोग कर रहे हैं।

यहाँ MainActivity के लिए लेआउट है

<androidx.constraintlayout.widget.ConstraintLayout 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"
                                               tools:context=".MainActivity">

<androidx.appcompat.widget.Toolbar
        android:id="@+id/toolBar"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

</androidx.appcompat.widget.Toolbar>

<fragment
        android:id="@+id/my_nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintTop_toBottomOf="@id/toolBar"
        app:layout_constraintBottom_toTopOf="parent"
        app:navGraph="@navigation/nav_graph"/>

अपनी गतिविधि कक्षा में नीचे की तरह अपनी गतिविधि में अपना टूलबार सेट करें।

val navHostFragment = supportFragmentManager
        .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment? ?: return

val navController = navHostFragment.findNavController()
val toolBar = findViewById<Toolbar>(R.id.toolBar)
setSupportActionBar(toolBar) // To set toolBar as ActionBar
setupActionBarWithNavController(navController)

setupActionBarWithNavController (navController) यदि आवश्यक हो तो टूलबार पर एक बैक बटन बनाएगा और बैकबटन कार्यक्षमता को संभालता है। यदि आपको एक CustomBack कार्यक्षमता लिखने की आवश्यकता है, तो अपने अंश OnCreate () विधि पर नीचे दिए गए के रूप में एक कॉलबैक बनाएं

val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {
        // Handle the back button event
    }

प्रलेखन से: https://developer.android.com/guide/navigation/navigation-custom-back


0

यदि आपका androidx.appcompat.app.AppCompatActivityसिर्फ उपयोग कर रहे हैं:

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

तो बस Manifest.xmlमूल गतिविधि में परिभाषित करें ।

<activity
    android:name=".MyActivity"
    ...>
  <meta-data
      android:name="android.support.PARENT_ACTIVITY"
      android:value=".ParentActivity" />
</activity>

इसके बजाय अगर आप एक का उपयोग कर रहे हैं Toolbarऔर आप एक कस्टम व्यवहार का उपयोग करना चाहते हैं:

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar" 
    app:navigationIcon="?attr/homeAsUpIndicator"
    .../>

और आपकी गतिविधि में:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //....
    }
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.