एंड्रॉइड L में एक्शन बार नेविगेशन मोड को हटा दिया गया है


203

एंड्रॉयड "L" पूर्वावलोकन के लिए एपीआई diff रिपोर्ट पर एक नज़र ले रहा है, मुझे लगता है कि में नेविगेशन मोड से संबंधित सभी तरीकों ActionBarवर्ग (जैसे setNavigationMode(), addTab(), selectTab(), और ग)। अब पदावनत हो गए हैं।

दस्तावेज़ बताते हैं:

एक्शन बार नेविगेशन मोड को इनलाइन टूलबार एक्शन बार द्वारा अपग्रेड किया गया और समर्थित नहीं है। इसके बजाय अन्य सामान्य नेविगेशन पैटर्न का उपयोग करने पर विचार करें।

माना प्रतिस्थापन क्या है?

इसके अलावा, एक नई अवधारणा "इनलाइन टूलबार एक्शन बार" है? मुझे नहीं लगता कि मैंने इसके बारे में सुना है।


L पूर्वावलोकन के लिए आपने डॉक्स कहां पाया?
कुनो

8
@KlassenK यह अभी तक मुख्य दस्तावेज में एकीकृत नहीं है, लेकिन आप इसे डेवलपर
।android.com

डॉक्स के लिंक के लिए धन्यवाद!
रॉबर्ट कार्ल

SetNavigationList के लिए आपने क्या इस्तेमाल किया
Lion789

1
@SishishHerwade हाँ, क्योंकि यह मुख्य दस्तावेज में विलय कर दिया गया था जब एंड्रॉइड 5.0 जारी किया गया था। किसी भी मामले में, अब आप में समाप्त नोटिस मिल सकता है developer.android.com/reference/android/app/...
matiash

जवाबों:


179

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

अब पदावनत: PagerTabStrip समर्थन पुस्तकालय का हिस्सा है (और कुछ समय के लिए किया गया है) और एक सीधा प्रतिस्थापन के रूप में कार्य करता है। यदि आप नए Google Play शैली टैब पसंद करते हैं, तो आप PagerSlidingTabStrip लाइब्रेरी का उपयोग कर सकते हैं या इस देव बाइट्स वीडियो में बताए गए स्लाइडिंगटैब्सबेसिक या स्लाइडिंगटैबसॉलर्स में से किसी भी Google द्वारा दिए गए उदाहरणों को संशोधित कर सकते हैं ।


8
यह पोर्ट्रेट मोड में एक प्रत्यक्ष प्रतिस्थापन है, जिसमें विस्तारित सामग्री-प्रकार हेडर का उपयोग करना आसान है। हालाँकि, परिदृश्य मोड में ActionBar टैब स्वचालित रूप से महत्वपूर्ण स्क्रीन क्षेत्र को मुक्त करते हुए, स्वचालित रूप से एक्शन बार में आगे बढ़ते हैं। किसी को भी समर्थन पुस्तकालय के साथ इसे प्रबंधित करने का एक साफ तरीका पता है?
एहर्तवेल

9
डेवलपर दस्तावेज़ अभी भी एक्शन बार टैब का उपयोग करके कहता है। Simlpy अभी तक अपडेट नहीं किया गया है? developer.android.com/training/implementing-navigation/…
रोमुलस उरागी त्सई

3
यह NAVIGATION_MODE_TABS के लिए प्रतिस्थापन है, लेकिन NAVIGATION_MODE_LIST के लिए नहीं: /
Geob-o-matic

2
@Geobert - NAVIGATION_MODE_LISTबहुत आसान है, यह देखते हुए कि सभी ने एक स्पिनर और कुछ कॉलबैक सहायक जोड़े थे ।
at:४ib पर अयनांनिबलेक

2
के लिए प्रतिस्थापन क्या है NAVIGATION_MODE_LIST? मेरा यह सूची के रूप में पदावनत ...
सौरोन

20

अब जब एंड्रॉइड 5.0 डॉक्स उपलब्ध हैं, हमारे पास टूलबार विजेट के लिए आधिकारिक दस्तावेज हैं :

एप्लिकेशन सामग्री के भीतर उपयोग के लिए एक मानक टूलबार।

टूलबार एप्लिकेशन लेआउट के भीतर उपयोग के लिए एक्शन बार का एक सामान्यीकरण है। जबकि एक एक्शन बार पारंपरिक रूप से फ्रेमवर्क द्वारा नियंत्रित एक गतिविधि की अपारदर्शी खिड़की की सजावट का हिस्सा है, एक टूलबार को दृश्य पदानुक्रम के भीतर नेस्टिंग के किसी भी मनमाने स्तर पर रखा जा सकता है

एक Toolbarविजेट का उपयोग एक्शन बार को बदलने के लिए भी किया जा सकता है:

कोई एप्लिकेशन setActionBar()विधि का उपयोग करके किसी टूलबार के लिए एक्शन बार के रूप में टूलबार नामित कर सकता है।

एक्शन बार में टैब का अपचयन संभवत: इस वजह से होता है, क्योंकि टूलबार में स्वयं टैब नहीं हो सकता है।

इसके अलावा, यह ऐप्पकॉम लाइब्रेरी के माध्यम से पिछले एंड्रॉइड वर्जन के लिए उपलब्ध है। अधिक जानकारी के लिए क्रिस बैन्स की यह पोस्ट देखें । अंश:

एंड्रॉइड 5.0 एक नया टूलबार विजेट पेश करता है। यह ActionBar पैटर्न का एक सामान्यीकरण है लेकिन इसका उपयोग करने में आपको बहुत अधिक नियंत्रण और लचीलापन मिलता है। टूलबार आपकी पदानुक्रम में किसी अन्य की तरह ही एक दृश्य है, जो आपके बाकी विचारों, चेतन, घटनाओं को स्क्रॉल करने के लिए प्रतिक्रिया करने में आसान बनाता है।


53
"बहुत अधिक नियंत्रण और लचीलापन" केवल तभी अच्छा होता है जब समझदार और उपयोग करने में आसान हो। अगर कुछ लचीला है, लेकिन आपको इसे काम करने के लिए यहां और वहां 20 लाइनों की आवश्यकता है, तो मैं इसे जीत नहीं मानता ...
TWiStErRob

1
@TWiStErRob मैं सहमत हूँ। उसका जोर, मेरा नहीं :)
मतिश

6
@TWiStErRob मुझे ऐसा ही लगता है ... Google बेहतर तरीके से देखता है, इस तरह की गतिविधि मुझे पुराने Microsoft की याद दिला रही है
Sauron

13

ऐसा लगता है जैसे उन्होंने एक नया वर्ग जोड़ा है जिसका android.widget.Toolbarविस्तार है ViewGroup। इसके अलावा वे एक नई विधि जोड़ा setActionBar(Toolbar)में Activity। मैं अभी तक यह परीक्षण नहीं किया है, लेकिन जैसे आप के सभी प्रकार लपेट कर सकते हैं यह लग रहा है TabWidgets, Spinnersएक में या कस्टम दृश्य Toolbarऔर अपने Actionbar के रूप में उपयोग।


1
क्या कोई साझा कर सकता है यदि उन्होंने टूलबार विजेट के साथ कुछ भी करने की कोशिश की है या यह जानता है कि यह कैसे काम करना है। यह भी संगतता पैकेज में शामिल है?
सैंड्रा


1
लिंक के लिए बहुत बहुत धन्यवाद..तो अब अगर मैं एक ऐसा ऐप विकसित करना चाहता हूं जो नई सामग्री दिशानिर्देशों के अनुसार हो, तो मुझे शायद टूलबार के उपलब्ध होने का इंतजार करना चाहिए, क्योंकि अगर मैं एक्शनबार का उपयोग करता हूं तो मैं सब कुछ उपयोग करूंगा कि वंचित है ..?
सैंड्रा

1
ActionBar अभी भी एक मानक डिजाइन पैटर्न होगा। केवल नेविगेशन मोड को हटा दिया जाएगा (टैब या स्पिनर)। देखें developer.android.com/guide/topics/ui/actionbar.html#Tabs और developer.android.com/guide/topics/ui/actionbar.html#Dropdown
कुनो

1
मुझे लगता है कि यह प्रश्न से संबंधित है। नया i / o 2014 एप्लिकेशन का एपीके डाउनलोड के लिए उपलब्ध है, और जैसा कि आप plus.google.com/+RomanNurik/posts/PD6MS3feXTT से देख सकते हैं , इसमें टूलबार शैलियों का भरपूर उपयोग किया गया है । हमें बस स्रोत कोड के लिए इंतजार करना होगा, और फिर इसका पता लगाना होगा :(
सैंड्रा

4

Toolbarकई लाइन ऑब्जेक्ट्स को फुलाए जाने के लिए नए का उपयोग नहीं किया जा सकता है, इसलिए इसमें टैब्स जोड़ना असंभव है।
यदि आप एक Toolbarतरह का उपयोग करना चाहते हैं तो आप इसमें TabWidgetकुछ टैब ऑब्जेक्ट सम्मिलित कर सकते हैं, लेकिन केवल पुरानी होलो शैली के साथ।

यहाँ वहाँ एक कस्टम पुस्तकालय है कि का उपयोग करता है V7 है Toolbarकी तरह TabWidgetनई सामग्री डिज़ाइन एनिमेशन के साथ है, लेकिन यह वर्ष से एक ही तरीके का उपयोग करता है ActionBar Tabs, ताकि आप अपने संलग्न कर सकते हैं ViewPagerयह करने के लिए।


3

हटाए गए ActionBar के 'प्रतिस्थापन' के लिए, मैंने अपने ActionBar- प्रकार के चर को PagerTabStrip में बदल दिया, जैसा कि टिप्पणी में (पुराने कोड के अनुसार):

// ActionBar bigActionBar;
PagerTabStrip bigActionBar;

~ ActionBar's .selectTab (tabindex) के लिए एक 'प्रतिस्थापन' मेरे संबंधित ViewPager's .setCurrentItem (int) विधि का उपयोग करना था, इस तरह (टिप्पणी में पुराना कोड):

/*
ActionBar.Tab eventTab = bigActionBar.getTabAt(2);
bigActionBar.selectTab(eventTab);
*/
mViewPager.setCurrentItem(2);

आशा है कि यह उपयोगी है।


1

मेरे पास एक ही समस्या थी और यह समाधान मुझे काफी पसंद आया:

व्यूअर पेज वाले लेआउट xml फ़ाइल में, दिखाए अनुसार PagerTabStrip जोड़ें:

<android.support.v4.view.PagerTabStrip
    android:id="@+id/pager_tab_strip"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:background="#996633"
    android:textColor="#CCCCCC"
    android:paddingTop="5dp"
    android:paddingBottom="5dp" />

पृष्ठ शीर्षक को नियंत्रित करने के लिए, अपने ViewPager फ़ाइल में एक स्विच स्टेटमेंट जोड़ें:

@Override
public CharSequence getPageTitle(int position)
{
    switch (position)
    {
    case 0:
        return "Page 1";

    case 1:
        return "Page 2";

    case 2:
        return "Page 3";

    }

    return null;
}

0

FragmentTabHost भी एक विकल्प है।

यह कोड Android डेवलपर की साइट से है:

/**
 * This demonstrates how you can implement switching between the tabs of a
 * TabHost through fragments, using FragmentTabHost.
 */
public class FragmentTabs extends FragmentActivity {
    private FragmentTabHost mTabHost;

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

    setContentView(R.layout.fragment_tabs);
    mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
    mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

    mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
            FragmentStackSupport.CountingFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),
            LoaderCursorSupport.CursorLoaderListFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"),
            LoaderCustomSupport.AppListFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"),
            LoaderThrottleSupport.ThrottledLoaderListFragment.class, null);
    }
}

1
यहाँ एक ट्यूटोरियल है जिसमें यह उत्तर शामिल है, इसलिए यह किसी को skholingua.com/android-basic/user-interface/compositeitems/… में
Dejan

0

मैंने इन ट्यूटोरियल्स को एक्शन बार (अब 'टूल बार' - argh) को एक साथ डालते हुए मददगार पाया जो सामग्री डिजाइन के साथ स्लाइडिंग टैब का समर्थन करता है:

https://www.youtube.com/watch?v=Fl0xMuo10yA

http://www.exoguru.com/android/material-design/navigation/android-sliding-tabs-with-material-design.html

आपको अपनी विशेष स्थिति से मेल खाने के लिए इन संसाधनों को संश्लेषित करना होगा। उदाहरण के लिए, आप मैन्युअल रूप से उसी शैली में टैब बनाना नहीं चाहते हैं जो exoguru.com ट्यूटोरियल ने किया था।


दूसरा लिंक मर चुका है।
जेकरसो

@jcaruso मेरी गलती नहीं है क्योंकि उस डोमेन की समय सीमा समाप्त हो रही है। यूट्यूब वीडियो अभी भी प्रासंगिक है
kip2

1
@ kip2 मैं सहमत हूं, यह आपकी गलती नहीं है। हालाँकि, मेरा सुझाव है कि सभी लोग सुझाव दें, इस समस्या के कारण उत्तरों को समझाने के लिए लिंक का उपयोग करने से बचें।
jcaruso

0

अच्छी तरह से मेरे लिए उपकरण पट्टी v7 विजेट appcompat का उपयोग करके पदावनत नेविगेशन टूलबार को संभालने के लिए।

    setSupportActionBar(toolbar);
    getSupportActionBar().setSubtitle("Feed Detail");
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //goToWhere
        }
    });

0

मुझे लगता है कि जब आपके पास तीन से पांच स्क्रीन के बराबर उपयुक्त स्थान होता है, तो बॉटम नोएविएक्टिविटी होती है, इसका उपयोग टुकड़ों को बदलने के लिए किया जा सकता है।

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

एक ट्यूटोरियल यहाँ पाया जा सकता है: https://android.jlelse.eu/ultimate-guide-to-bottom-navigation-on-android-75e4efb8105f

एक और गुणवत्ता ट्यूटोरियल एंड्रॉइड हाइव पर यहां पाया जा सकता है: https://www.androidhive.info/2017/12/android-working-with-bottom-navigation/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.