İşlem çubuğu gezinme modları Android L'de kullanımdan kaldırıldı


203

Android "L" önizleme için API fark raporuna göz çıkarak, görüyorum ki navigasyon modları ile ilgili tüm yöntemler ActionBarsınıfında (örneğin setNavigationMode(), addTab(), selectTab(), ve c). artık kullanımdan kaldırıldı.

Belgeler şunları açıklıyor:

İşlem çubuğu gezinme modları kullanımdan kaldırılmıştır ve satır içi araç çubuğu işlem çubukları tarafından desteklenmemektedir. Bunun yerine diğer yaygın gezinme düzenlerini kullanmayı düşünün.

Sözde ikame nedir?

Ayrıca, "satır içi araç çubuğu işlem çubukları" yeni bir kavram mıdır? Daha önce duyduğumu sanmıyorum.


L Önizleme için belgeleri nerede buldunuz?
Kuno

8
@KlassenK Henüz ana belgelere entegre edilmemiştir, ancak geliştirici.android.com
preview/reference.html

Dokümanlara bağlantı için teşekkürler!
Robert Karl

SetNavigationList için ne kullandınız
Lion789

1
@ShirishHerwade Evet, çünkü Android 5.0 yayınlandığında ana dokümantasyonla birleştirildi. Her durumda, artık kullanımdan
kaldırma

Yanıtlar:


179

Yeni Android Tasarım Destek Kitaplığı , sekmeler için malzeme tasarımı yönergelerine uyan bir sekme uygulaması sağlayarak TabLayout'u ekler . Sekmeler uygulamak ve nasıl tam bir örneklerde bulunabilir bu videoViewPager

Şimdi kaldırılmış: PagerTabStrip destek kütüphanesinin parçasıdır (ve bir süre olmuştur) ve doğrudan bir yedek olarak hizmet vermektedir. Daha yeni Google Play stili sekmelerini tercih ediyorsanız PagerSlidingTabStrip kitaplığını kullanabilir veya bu Dev Bytes videosunda açıklandığı gibi Google tarafından sağlanan SlidingTabsBasic veya SlidingTabsColors örneklerinden birini değiştirebilirsiniz .


8
Bu, genişletilmiş Malzeme tipi başlık kullanımını kolaylaştırma bonusu ile dikey modda doğrudan bir alternatiftir. Ancak, yatay modda ActionBar sekmeleri otomatik olarak eylem çubuğunun içine doğru hareket ederek önemli ekran alanını boşaltır. Destek kütüphanesi ile bunu temiz bir şekilde bilen var mı?
ehartwell

9
Geliştirici belgesi yine de İşlem Çubuğu Sekmesini kullandığını söylüyor. Simlpy henüz güncellenmedi mi? developer.android.com/training/implementing-navigation/…
Romulus Urakagi Ts'ai

3
Bu NAVIGATION_MODE_TABS yerine geçer, ancak NAVIGATION_MODE_LIST yerine geçmez: /
Geob-o-matic

2
@Geobert - NAVIGATION_MODE_LISTtüm yaptıkları bir Spinner ve geri arama yardımcıları eklemek olduğu için çok daha kolay .
ianhanniballake

2
Bunun yerine ne var NAVIGATION_MODE_LIST? Mine, kullanımdan kaldırılmış olarak listeliyor ...
Sauron

20

Android 5.0 dokümanları kullanıma sunulduğundan artık Araç Çubuğu widget'ı için resmi dokümantasyona sahibiz :

Uygulama içeriğinde kullanım için standart bir araç çubuğu.

Araç Çubuğu, uygulama düzenlerinde kullanım için eylem çubuklarının genelleştirilmesidir. Bir eylem çubuğu geleneksel olarak bir Etkinliğin çerçeve tarafından denetlenen opak pencere dekorunun bir parçası olsa da, bir Araç Çubuğu bir görünüm hiyerarşisinde herhangi bir rastgele yuvalama düzeyine yerleştirilebilir .

ToolbarEylem çubuğunu değiştirmek için bir widget da kullanılabilir:

Bir uygulama, setActionBar()yöntemi kullanarak bir Etkinlik için eylem çubuğu olarak bir Araç Çubuğu atamayı seçebilir .

Eylem çubuklarındaki sekmelerin kullanımdan kaldırılması büyük olasılıkla buna bağlıdır, çünkü araç çubukları sekmenin kendisini içeremez.

Ayrıca, önceki Android sürümleri için appcompat kütüphanesi aracılığıyla kullanılabilir. Daha fazla bilgi için Chris Banes tarafından gönderilen bu mesaja bakın . Bir alıntı:

Android 5.0, yeni bir Araç Çubuğu widget'ı sunar. Bu, ActionBar deseninin genelleştirilmesidir, ancak kullanımında çok daha fazla kontrol ve esneklik sağlar. Araç Çubuğu, diğer tüm gibi hiyerarşinizdeki bir görünümdür ve görünümlerinizin geri kalanıyla araya girmeyi, animasyon oluşturmayı, kaydırma olaylarına tepki vermeyi kolaylaştırır.


53
"çok daha fazla kontrol ve esneklik" yalnızca mantıklı ve kullanımı kolay varsayılanlar varsa iyidir. Bir şey esnekse, ancak çalışması için burada 20 satıra ihtiyacınız varsa, bunu bir kazanç olarak
görmüyorum

1
@TWiStErRob Kabul ediyorum. Vurgu onun, benim değil :)
Matiash

6
@TWiStErRob Aynı şekilde hissediyorum ... Google daha iyi dikkat et, bu tür bir etkinlik bana eski Microsoft'u hatırlatıyor
Sauron

13

Yeni bir sınıf adında eklenen gibi görünüyor android.widget.Toolbaruzanan ViewGroup. Ayrıca yeni bir yöntem ilave setActionBar(Toolbar)olarak Activity. Henüz test etmedim, ancak tüm türlerini içine alabilirsiniz gibi görünüyor TabWidgets, Spinnersbir içine veya özel görünümler Toolbarve İşlem Çubuğu olarak kullanabilirsiniz.


1
Birisi Araç Çubuğu widget'ıyla bir şey denediğinde veya nasıl çalışacağını bildiyse paylaşabilir. Ayrıca uyumluluk paketine dahil mi?
Sandra


1
Bağlantı için çok teşekkür ederim ... şimdi yeni malzeme yönergelerine göre olacak bir uygulama geliştirmek istiyorsanız, muhtemelen araç çubuğunun kullanılabilir olmasını beklemeliyim, çünkü eylem çubuğunu kullanırsam her şeyi kullanacağım kullanımdan kaldırıldı ..?
Sandra

1
ActionBar yine de standart bir tasarım deseni olacaktır. Yalnızca gezinme modları kullanımdan kaldırılacaktır (Sekmeler veya Dönücü). Bkz developer.android.com/guide/topics/ui/actionbar.html#Tabs ve developer.android.com/guide/topics/ui/actionbar.html#Dropdown
Kuno

1
Soruyla ilgili olduğunu düşünüyorum .. yeni i / o 2014 uygulamasının apk indirilebilir ve plus.google.com/+RomanNurik/posts/PD6MS3feXTT adresinden de görebileceğiniz gibi , birçok araç çubuğu stili vardır. . Sadece kaynak kodunu beklemek ve keşfetmek zorundayız :(
Sandra

4

Yeni Toolbar, birden çok satır nesnesini şişirmek için kullanılamaz, bu nedenle ona Sekme eklemek imkansızdır.
Bir Toolbarbenzeri kullanmak istiyorsanız TabWidget, buna yalnızca eski Holo stiliyle bazı Sekme Nesneleri ekleyebilirsiniz.

Burada yeni Materyal Tasarımı animasyonlarında olduğu Toolbargibi v7 kullanan özel bir Kütüphane var TabWidget, ancak eskisinden aynı yöntemleri kullanıyor ActionBar Tabs, böylece ona ekleyebilirsiniz ViewPager.


3

Kullanımdan kaldırılmış ActionBar'ın 'değiştirilmesi' için, ActionBar türü değişkenlerimin türünü PagerTabStrip olarak değiştirdim, (yorumdaki eski kod):

// ActionBar bigActionBar;
PagerTabStrip bigActionBar;

~ ActionBar'ın .selectTab (tabindex) 'yerine', ilişkili ViewPager'in .setCurrentItem (int) yöntemini şu şekilde kullanmaktı (yorumdaki eski kod):

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

Umarım bu yardımcı olur.


1

Aynı sorunu yaşadım ve bu çözüm bana oldukça iyi uyuyordu:

Viewpager'ı içeren düzen xml dosyasına, bir PagerTabStrip öğesini gösterildiği gibi ekleyin:

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

Sayfa başlıklarını kontrol etmek için ViewPager dosyanıza bir switch ifadesi ekleyin:

@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 da bir seçenektir.

Bu kod Android geliştiricisinin sitesinden:

/**
 * 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
İşte bu yanıtı içeren bir eğitim, bu yüzden skholingua.com/android-basic/user-interface/compositeitems/…
Dejan

0

Materyal Tasarımı ile kayan sekmeleri destekleyen bir eylem çubuğu (şimdi 'araç çubuğu' - argh) bir araya getirirken bu öğreticileri yararlı buldum:

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

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

Bu kaynakları kendi durumunuza uyacak şekilde sentezlemeniz gerekir. Örneğin, sekmeleri exoguru.com eğiticisiyle aynı stilde manuel olarak oluşturmak istemeyebilirsiniz.


İkinci bağlantı öldü.
Mart'ta jcaruso

@jcaruso, bu etki alanının süresi dolduğundan bu benim hatam değil. Youtube videosu yine de alakalı
kip2

1
@ kip2 Kabul ediyorum, bu senin hatan değil. Ancak, herkesin önerdiği gibi, bu sorun nedeniyle cevapları açıklamak için bağlantılar kullanmaktan kaçının.
jcaruso

0

Eh benim için araç çubuğu v7 widget appcompat kullanarak kullanımdan kaldırılmış navigasyon araç çubuğunu işlemek.

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

0

Bence eşit önemde üç ila beş ekran olduğunda uygun bir yedek BottomNavigationActivity olduğunu, bu parçaları değiştirmek için kullanılabilir.

Android Studio'da bunun için bir sihirbaz olduğunu fark edeceksiniz, ancak Android Studio'nun aşırı karmaşık kazan plakası kodu üretme eğilimi olduğundan dikkatli olun.

Bir eğitim burada bulunabilir: https://android.jlelse.eu/ultimate-guide-to-bottom-navigation-on-android-75e4efb8105f

Başka bir kaliteli öğretici Android Hive'da bulunabilir: https://www.androidhive.info/2017/12/android-working-with-bottom-navigation/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.