작업 표시 줄 탐색 모드는 Android L에서 더 이상 사용되지 않습니다.


203

안드로이드 "L"미리보기에 대한 API은 diff 보고서에서 살펴보면, 내가 볼 것을 탐색 모드와 관련된 모든 방법 ActionBar클래스 (예 : setNavigationMode(), addTab(), selectTab(), C). 더 이상 사용되지 않습니다.

설명서는 다음을 설명합니다.

작업 표시 줄 탐색 모드는 더 이상 사용되지 않으며 인라인 도구 모음 작업 표시 줄에서 지원되지 않습니다. 다른 일반적인 탐색 패턴을 대신 사용해보십시오.

대체품은 무엇입니까?

또한 "인라인 툴바 작업 표시 줄"은 새로운 개념입니까? 전에는 들어 본 적이 없습니다.


L Preview에 대한 문서는 어디서 찾습니까?
쿠노

8
@KlassenK 아직 기본 문서에 포함되어 있지는 않지만 developer.android.com/preview/reference.html
matiash

문서와 연결해 주셔서 감사합니다!
Robert Karl

setNavigationList 사용하신 내용
Lion789

1
@ShirishHerwade 예. Android 5.0이 출시 될 때 기본 문서로 병합 되었기 때문입니다. 어쨌든 developer.android.com/reference/android/app/…
matiash

답변:


179

새로운 Android 디자인 지원 라이브러리TabLayout을 추가 하여 탭의 재질 디자인 지침 과 일치하는 탭 구현을 제공 합니다 . 탭을 구현하는 방법에 대한 전체 연습은 이 비디오ViewPager 에서 찾을 수 있습니다.

지금은 사용되지 않는 : PagerTabStrip가 지원 라이브러리의 일부 (그리고 약간의 시간이었다)와 직접 대체 역할을합니다. 최신 Google Play 스타일 탭을 선호하는 경우 PagerSlidingTabStrip 라이브러리를 사용 하거나이 Dev Bytes 비디오에 설명 된대로 Google 제공 예제 SlidingTabsBasic 또는 SlidingTabsColors 중 하나를 수정할 수 있습니다 .


8
확장 된 머티리얼 타입 헤더를 쉽게 사용할 수있게 해주는 세로 모드에서 직접 대체됩니다. 그러나 가로 모드에서는 작업 표시 줄 탭이 작업 표시 줄 자체로 자동 이동하여 중요한 화면 영역을 비 웁니다. 지원 라이브러리를 사용하여 이것을 관리하는 확실한 방법을 아는 사람이 있습니까?
ehartwell

9
개발자 문서는 여전히 작업 표시 줄 탭을 사용한다고 말합니다. Simlpy가 아직 업데이트되지 않았습니까? developer.android.com/training/implementing-navigation/…
Romulus Urakagi Ts'ai

3
이 NAVIGATION_MODE_TABS에 대한하지만 NAVIGATION_MODE_LIST를 대체 : /
Geob이 - 오 - 매틱

2
@Geobert- Spinner 와 일부 콜백 도우미를 NAVIGATION_MODE_LIST추가했기 때문에 훨씬 쉽습니다 .
ianhanniballake

2
대체품은 무엇입니까 NAVIGATION_MODE_LIST? 광산은 그것을 더 이상 사용되지 않는 것으로 나열합니다 ...
Sauron

20

이제 Android 5.0 문서를 사용할 수 있으므로 툴바 위젯에 대한 공식 문서 가 있습니다 .

응용 프로그램 컨텐츠 내에서 사용하기위한 표준 도구 모음.

툴바는 응용 프로그램 레이아웃 내에서 사용하기위한 작업 표시 줄의 일반화입니다. 액션 바는 전통적으로 프레임 워크에 의해 제어되는 액티비티의 불투명 윈도우 데코의 일부이지만 툴바는 뷰 계층 내에서 임의의 중첩 레벨에 배치 할 수 있습니다 .

Toolbar위젯은 작업 표시 줄을 대체하는 데 사용할 수 있습니다 :

애플리케이션은 setActionBar()메소드를 사용하여 툴바를 활동의 조치 표시 줄로 지정할 수 있습니다 .

툴바는 탭 자체를 포함 할 수 없으므로 작업 표시 줄에서 탭이 사용되지 않을 가능성이 높습니다.

또한 appcompat 라이브러리를 통해 이전 Android 버전에서 사용할 수 있습니다. 자세한 내용 은 Chris Banes의이 게시물 을 참조하십시오. 발췌 :

Android 5.0에는 새로운 툴바 위젯이 도입되었습니다. 이것은 ActionBar 패턴의 일반화이지만 사용에있어 훨씬 더 많은 제어와 유연성을 제공합니다. 툴바는 다른 계층 구조와 마찬가지로 계층 구조의보기로, 나머지보기와 인터리브하고 애니메이션하고 스크롤 이벤트에 반응하는 것이 더 쉽습니다.


53
"더 많은 제어와 유연성"은 합리적인 기본 설정이있는 경우에만 유용합니다. 융통성이 있지만 여기에 20 개의 라인이 필요하고 그것이 작동하게하려면, 나는 이것을 승리로 간주하지 않습니다 ...
TWiStErRob

1
@TWiStErRob 동의합니다. 강조 : 내 것이 아니라 :)
matiash

6
내가 같은 느낌 @TWiStErRob ... 구글은 더 조심, 이런 종류의 활동은 기존의 마이크로 소프트의 저를 생각 나게한다
사우론

13

그들이 android.widget.Toolbar확장 하는 새로운 클래스를 추가 한 것 같습니다 ViewGroup. 또한에 새로운 방법을 추가 setActionBar(Toolbar)했습니다 Activity. 나는 아직 테스트하지 않은,하지만 당신은 모든 종류의 포장 수있는 것 같습니다 TabWidgets, Spinners으로 또는 사용자 정의보기를 Toolbar하고 실행 바로 사용합니다.


1
툴바 위젯으로 무언가를 시도했거나 작동 방식을 알고있는 사람이 공유 할 수 있습니까? 호환성 패키지에도 포함되어 있습니까?
Sandra


1
링크에 대해 대단히 감사합니다 .. 이제 새로운 재료 지침에 따라 앱을 개발하려면 툴바를 사용할 수있을 때까지 기다려야합니다. 더 이상 사용되지 않습니다.?
Sandra

1
ActionBar는 여전히 표준 디자인 패턴입니다. 탐색 모드 만 더 이상 사용되지 않습니다 (탭 또는 스피너). developer.android.com/guide/topics/ui/actionbar.html#Tabsdeveloper.android.com/guide/topics/ui/actionbar.html#Dropdown
Kuno를

1
나는 그것이 질문과 관련이 있다고 생각합니다. 새로운 2014 년 I / O 응용 프로그램의 APK는 다운로드 할 수 있으며 plus.google.com/+RomanNurik/posts/PD6MS3feXTT 에서 볼 수 있듯이 툴바 스타일이 많이 있습니다. . 우리는 소스 코드를 기다렸다가 다음 코드를 탐색해야합니다. (
Sandra

4

새로운 Toolbar라인은 여러 라인 객체를 팽창시키는 데 사용할 수 없으므로 탭을 추가 할 수 없습니다. 비슷한
것을 사용하려면 일부 탭 객체를 삽입 할 수 있지만 이전 Holo 스타일에서만 사용할 수 있습니다.ToolbarTabWidget

여기 에 새로운 머티리얼 디자인 애니메이션 Toolbar과 같이 v7을 사용하는 커스텀 라이브러리가 TabWidget있지만 이전과 동일한 방법을 사용 ActionBar Tabs하므로에 연결할 수 ViewPager있습니다.


3

더 이상 사용되지 않는 ActionBar의 '바꾸기'를 위해 ActionBar 유형 변수의 유형을 PagerTabStrip으로 변경했습니다 (이전 주석의 주석).

// ActionBar bigActionBar;
PagerTabStrip bigActionBar;

~ actionBar의 .selectTab (tabindex)에 대한 '대체'는 관련 ViewPager의 .setCurrentItem (int) 메소드를 다음과 같이 사용했습니다 (이전 주석 주석).

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

이것이 도움이 되길 바랍니다.


1

나는 같은 문제가 있었고이 솔루션은 나에게 아주 잘 어울렸다.

viewpager가 포함 된 레이아웃 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 파일에 switch 문을 추가하십시오.

@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

@jcaruso 그 도메인이 만료 된 것처럼 내 잘못이 아닙니다. youtube 비디오는 여전히 관련이 있습니다
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

3 ~ 5 개의 화면이 동일한 중요 화면을 가질 때 적합한 대체 방법은 BottomNavigationActivity이며 조각을 전환하는 데 사용할 수 있다고 생각합니다.

Android Studio에는 마법사가 존재하지만 Android Studio에는 지나치게 복잡한 보일러 플레이트 코드가 생성되는 경향이 있으므로주의하십시오.

튜토리얼은 여기에서 찾을 수 있습니다 : https://android.jlelse.eu/ultimate-guide-to-bottom-navigation-on-android-75e4efb8105f

또 다른 품질의 자습서는 Android Hive에서 https://www.androidhive.info/2017/12/android-working-with-bottom-navigation/ 에서 찾을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.