Android 에서 TabLayout 는 ViewPager 와 결합 하여 페이지 전환 을 실현 합 니 다.
1.build.gradle 에 의존 도 를 추가 합 니 다.예 를 들 어:
compile 'com.android.support:support-v4:23.4.0'
compile 'com.android.support:design:23.4.0'
support-v4 를 appcompat-v7 로 바 꿀 수도 있 습 니 다.예 를 들 어:
compile 'com.android.support:appcompat-v7:23.4.0'
appcompat-v7 은 슈퍼 port-v4 에 의존 하기 때문이다.
더 많은 설명 은 공식 문서 슈퍼 port library 부분 을 참고 할 수 있 습 니 다.
2.xml 에 TabLayout 와 ViewPager 를 추가 합 니 다.예 를 들 어:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tool="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tool:context=".TabViewActivity"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/tabLayoutBackground"
app:tabMode="scrollable"
app:tabTextColor="@color/color_white"
app:tabSelectedTextColor="@color/tabSelectedText"
app:tabIndicatorHeight="3dp"
app:tabIndicatorColor="@color/color_white"/>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
TabLayout:(1)tabMode 는 두 가지 속성 이 있 습 니 다.하 나 는"scrollable"입 니 다.다 중 탭 에 사용 합 니 다.다른 하 나 는'fixed'입 니 다.탭 이 적 으 면 모든 탭 이 화면 에 평균 적 으로 분포 되 기 때문에 탭 이 많 을 수 없고 이름 도 길 어 서 는 안 됩 니 다.그렇지 않 으 면 완전 하지 않 습 니 다.
(2)tabIndicator 는 텍스트 아래 의 지시 바 를 가리킨다.tab 을 선택 하면 표시 줄 이 텍스트 아래 에 나타 납 니 다.
3.뷰 대상 가 져 오기
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
4.Fragment StatePagerAdaper 의 하위 클래스 를 만 들 고 구조 방법 을 실현 합 니 다.
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
}
이 클래스 의 인 스 턴 스 대상 을 만 듭 니 다.ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
이 단계 에서 Fragment Pager Adapter 를 실현 하 는 하위 클래스 나 Fragment State Pager Adapter 를 실현 하 는 하위 클래스 를 선택 할 수 있 습 니 다.
Fragment PagerAdapter 는 페이지 수가 적은 경우,Fragment 의 수량 이 적은 경우 에 사 용 됩 니 다.사용자 가 현재 Activity 에 머 물 러 있 는 한 그 중의 Fragment 는 소각 되 지 않 기 때문에 메모리 소모 가 비교적 큽 니 다.
한편,Fragment StatePagerAdapter 의 작업 원 리 는 ListView 와 유사 하 다.사용자 가 볼 수 없 는 Fragment 만 있 으 면 모두 소각 되 고 상태 만 유지 된다.
v4 호 환 패키지 의 Fragment 를 사용 하기 때문에 getSupportFragment Manager()로 Fragment Manager 를 가 져 와 야 합 니 다.
5.ViewPager 와 TabLayout 설정
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
2.완벽 한 어댑터1.다시 쓰 는 세 가지 방법
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
......
@Override
public Fragment getItem(int position) {
return null;
}
@Override
public int getCount() {
return 0;
}
@Override
public CharSequence getPageTitle(int position) {
return super.getPageTitle(position);
}
}
2.tab 의 제목 데이터 만 들 기:private String[]mTitles=new String[]{"국어","영어","수학","물리","생물","화학","지리","정치","역사"};
Fragment 의 하위 클래스 만 들 기:
public class ViewPagerFragment extends Fragment {
private static final String KEY = "extra";
private String mMessage;
public ViewPagerFragment() {
}
public static ViewPagerFragment newInstance(String extra) {
Bundle args = new Bundle();
args.putString(KEY, extra);
ViewPagerFragment fragment = new ViewPagerFragment();
fragment.setArguments(args);
return fragment;
}
}
Fragment 의 집합 대상 을 만 들 고 집합 에 인 스 턴 스 대상 을 추가 합 니 다.
private ArrayList<ViewPagerFragment> mViewPagerFragments = new ArrayList<>();
......
for (int i = 0; i < mTitles.length; i++) {
mViewPagerFragments.add(ViewPagerFragment.newInstance(mTitles[i]));
}
3.Adapter 의 방법 수정
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
private String[] titles;
private ArrayList<ViewPagerFragment> viewPagerFragments;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
public void setTitles(String[] titles) {
this.titles = titles;
}
public void setFragments(ArrayList<ViewPagerFragment> viewPagerFragments) {
this.viewPagerFragments = viewPagerFragments;
}
@Override
public Fragment getItem(int position) {
return viewPagerFragments.get(position);
}
@Override
public int getCount() {
return viewPagerFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
4.Adapter 에 게 데 이 터 를 전달 합 니 다.
viewPagerAdapter.setTitles(mTitles);
viewPagerAdapter.setFragments(mViewPagerFragments);
3.프 래 그 먼 트 보완1、fragment_view_pager_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/fragment_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"/>
</LinearLayout>
2.Fragment 를 보완 하 는 방법
public class ViewPagerFragment extends Fragment {
......
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
if (bundle != null) {
mMessage = bundle.getString(KEY);
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_view_pager_item, container, false);
TextView textView = (TextView) view.findViewById(R.id.fragment_text);
textView.setText(mMessage);
return view;
}
}
Fragment 를 만 들 때 onCreate 방법 을 사용 합 니 다.그 중에서 일부 상태 정보의 초기 화 를 실행 하여 일시 정지 또는 정지 후의 복구 에 사용 합 니 다.Fragment 에서 보 기 를 처음 불 러 올 때 onCreateView 방법 을 사용 합 니 다.보 기 를 불 러 오고 초기 화 합 니 다.이 Fragment 레이아웃 의 루트 보 기 를 되 돌려 줍 니 다.그 중에서 inflate 방법의 세 번 째 매개 변 수 는 불 러 온 레이아웃(R.layot.fragmentview_pager_item)container 라 는 ViewGroup 에 추가 합 니 다.공식 문서 의 설명 에 따 르 면,지난번 에 그렇게 하면 시스템 이 이 레이아웃 을 container 에 추 가 했 기 때문에,여 기 는 false 입 니 다.
정적 효과 그림:
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 에서 TabLayout 에 빨 간 점 의 예제 코드 를 추가 합 니 다.본 고 는 안 드 로 이 드 에서 TabLayout 에 빨 간 점 을 추가 한 예제 코드 를 소개 하 였 으 며,구체 적 으로 다음 과 같다. 안 드 로 이 드 원생 의 android.support.design.wi...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.