У меня есть 3 навигационных вкладки с тремя различными фрагментами в них.Как добавить салфетки между вкладками навигации в android?
Как добавить салфетки между фрагментами?
У меня есть 3 навигационных вкладки с тремя различными фрагментами в них.Как добавить салфетки между вкладками навигации в android?
Как добавить салфетки между фрагментами?
Android сделал что-то по этой причине, называемое ViewPager!
в вашем OnCreate метод, сделать что-то вроде этого:
pager = (ViewPager) findViewById(R.id.pager);
adapter = new MyPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
тогда
Включить следующее в ваш MainActivity:
public class MyPagerAdapter extends FragmentStatePagerAdapter {
SparseArray<Fragment> registeredFragments = new SparseArray<Fragment>();
private final String[] TITLES = getResources().getStringArray(R.array.tabs);
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public Fragment getItem(int position) {
switch(position) {
case 0: return OneFragment.newInstance(position);
case 1: return TwoFragment.newInstance(position);
case 2: return ThreeFragment.newInstance(position);
}
return null;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = (Fragment) super.instantiateItem(container, position);
registeredFragments.put(position, fragment);
return fragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
registeredFragments.remove(position);
super.destroyItem(container, position, object);
}
public Fragment getRegisteredFragment(int position) {
return registeredFragments.get(position);
}
}
код я отправил это код я использую. Это сложнее, чем обычно. Он отслеживает фрагменты (каждая вкладка), позволяя вам получить доступ к фрагментам друг от друга. Так что, если вы были в OneFragment, и хотел доступ к TwoFragment, вы могли бы сделать что-то вроде:
в OneFragment
private void getTwoFragmentData() {
data = (MainActivity) getActivity.getTwoFragmentData();
}
в MainActivity
public Data getTwoFragmentData() {
TwoFragment twoFragment = (TwoFragment) adapter.getRegisteredFragment(1);
return twoFragment.getData();
}
данных выше всего заполнитель для того, чтобы вы могли взаимодействовать с ним, но приведенный выше код является общей структурой того, как вы это сделаете.
Также вы должны отредактировать метод getItem
. И сделайте switch, case
соответственно.
В дополнение, вы можете сделать pager.setOffScreenPageLimit(x)
, а также загрузить содержимое x
вкладок от текущей вкладки, что полезно для хранения информации. Для 3 вкладок я бы использовал x = 2
, но в конечном счете, будьте осторожны, потому что это дополнительная память.
Наконец-то, последнее, что я использую библиотеку под названием com.astuetz.PagerSlidingTabStrip
, которая является удивительной для того, чтобы получить панель под вкладками, чтобы пронестись с вами и сделать ее очень чистой. Добавление его очень просто, и вы найдете более подробную информацию here
Мои activity_main.xml
выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- <com.astuetz.PagerSlidingTabStrip -->
<!-- android:id="@+id/tabs" -->
<!-- android:layout_width="match_parent" -->
<!-- android:layout_height="48dip" /> -->
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
<!-- android:layout_below="@+id/tabs" -->
tools:context=".MainActivity" />
</RelativeLayout>
Игнорируйте закомментирована материал. Это то, что я использую в дополнение к тому, что библиотека, указанная выше, интегрирована.
Как выглядит pager xml? мой просмотрщик фрагментов выглядит следующим образом:
Я редактировал ответ. – David
Что такое "navigation tabs"? – CommonsWare
3 вкладки под панелью действий. Когда они нажаты, они переключают фрагменты – dumbstudent
Как вы реализовали «3 вкладки под панелью действий»? – CommonsWare