2015-02-20 4 views
0

Я довольно новичок в разработке Android, поэтому я немного потерялся. Я пытаюсь сделать приложение со сдвижной навигацией табуляции, чтобы перейти на разные экраны.Android Studio: Как создать скользящую вкладку навигации?

Я как-то поработал над ним, и я не могу найти ничего, что сломает его, чтобы я мог понять. Из того, что я читал, мне пришлось бы использовать фрагменты? Прямо сейчас, у меня есть все мои экраны как отдельные действия, которые, вероятно, мне придется изменить, если я пытаюсь это сделать, правильно?

Я на самом деле не написал никакого кода, кроме того, что возился с xml, поэтому мне действительно нечего показать.

В любом случае, если кто-то может объяснить мне, как это сделать, это было бы здорово!

ответ

0

Что случилось с использованием нового мастера проекта и выбора «Tabbed Activity»?

tabbed activity

+0

Я попытался использовать это, но я не мог понять, как добавить больше страниц. Когда я его протестировал, он просто использовал один и тот же xml для каждой вкладки. –

+0

Правильно, каждая вкладка является фрагментом. Вы можете скопировать код примера, создать новый фрагмент и изменить макет. – tachyonflux

+0

Что именно мне нужно было бы скопировать? И чтобы создать новый фрагмент, я бы просто создал новый макет xml? –

0

Вы можете использовать ViewPager с PagerTitleStrip ..

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.myapp.ContainerFragment"> 

<!-- TODO: Update blank fragment layout --> 
<android.support.v4.view.ViewPager 
    android:id="@+id/mPager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v4.view.PagerTitleStrip 
     android:id="@+id/pager_title_strip" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top" 
     android:background="@android:color/transparent" 
     android:textColor="#fff" 
     android:paddingTop="4dp" 
     android:paddingBottom="4dp" /> 


</android.support.v4.view.ViewPager> 

вот ContainerFragment ..

import android.os.Bundle; 
import android.app.Fragment; 
import android.support.annotation.Nullable; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.ActionBar; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 



/** 
* A simple {@link Fragment} subclass. 
*/ 
public class ContainerFragment extends android.support.v4.app.Fragment { 

ViewPager mViewPager; 
PagerAdapter pagerAdapter; 

public NewsContainerFragment() { 
    // Required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_container, container, false); 
} 

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    pagerAdapter = new PagerAdapter(getChildFragmentManager(), this); 
    mViewPager = (ViewPager) getActivity().findViewById(R.id.mPager); 
    mViewPager.setAdapter(pagerAdapter); 
    } 

} 

Вот адаптер ..

import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.util.Log; 



public class PagerAdapter extends FragmentStatePagerAdapter { 



public PagerAdapter(FragmentManager fm) { 
    super(fm); 
    } 

@Override 
public Fragment getItem(int position) { 
    Fragment fragment = null; 
    switch (position) { 
     case 0: 
      fragment = new FirstFrag(); 
      break; 
     case 1: 
      fragment = new SecondFrag(); 
      break; 
     case 2: 
      fragment = new ThirdFrag(); 
      break; 
     default: 
      break; 
    } 

    return fragment; 
} 


@Override 
public int getCount() { 
    return 3; 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    if (position == 0) { 
     return "FIRST FRAG"; 
    } else if (position == 1) { 
     return "SECOND FRAG"; 
    } else if (position == 2) { 
     return "THIRD FRAG"; 
    } else { 
     return super.getPageTitle(position); 
    } 
    } 
} 
Смежные вопросы