Le contenu de cet article a été vérifié dans l'environnement suivant.
Une vue qui peut être changée en utilisant Fragment comme page. Comme ListView, ViewPager doit être utilisé en combinaison avec Adapter.
Une vue qui hérite de cette vue vous permet également de faire glisser l'écran pour changer de page et d'onglet. Cette fois, je vais expliquer l'utilisation de base de ViewPager.
Une application qui vous permet de basculer entre les pages d'auto-introduction en faisant glisser
nom de fichier | La description |
---|---|
MainActivity.java activity_main.xml |
ViewPager Disposition de l'écran contenant les vues et les boutons et leur activité |
NameFragment.java fragment_name.xml |
Disposition de la première page et de son fragment (page de nom) |
AgeFragment.java fragment_age.xml |
Disposition de la deuxième page et de son fragment (page d'âge) |
FoodFragment.java fragment_food.xml |
Mise en page de la 3ème page et de son Fragment (page de nourriture préférée) |
UserInfoViewPagerAdapter.java | Adaptateur générant un fragment lors du balayage |
Le code de la page de nom ressemble à ceci:
fragment_name.xml
<LinearLayout 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"
android:orientation="vertical"
tools:context="jp.co.casareal.sample.viewpagersample.fragment.NameFragment">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="La première page"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Le nom est Casa Real Taro."
android:textSize="20sp" />
</LinearLayout>
NameFragment.java
package jp.co.casareal.sample.viewpagersample.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import jp.co.casareal.sample.viewpagersample.R;
/**
* A simple {@link Fragment} subclass.
*/
public class NameFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_name, container, false);
}
}
Il existe deux types d'adaptateurs. «FragmentPagerAdapter» et «FragmentStatePagerAdapter». Chaque opération étant différente, il est nécessaire de la sélectionner en fonction de l'application à créer. Lorsque la page est commutée, «FragmentPagerAdapter» conserve le fragment affiché dans la mémoire. «FragmentStatePagerAdapter» rejette Fragment lorsque la page est commutée. Comme le nombre de pages est faible cette fois, j'ai utilisé "FragmentPagerAdapter".
UserInfoViewPagerAdapter.java
package jp.co.casareal.sample.viewpagersample.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import jp.co.casareal.sample.viewpagersample.fragment.AgeFragment;
import jp.co.casareal.sample.viewpagersample.fragment.FoodFragment;
import jp.co.casareal.sample.viewpagersample.fragment.NameFragment;
/**
* Created by naoi on 2017/04/24.
*/
public class UserInfoViewPagerAdapter extends FragmentPagerAdapter {
private static final int PAGE_NUM = 3;
public UserInfoViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position){
case 0:
fragment = new NameFragment();
break;
case 1:
fragment = new AgeFragment();
break;
default:
fragment = new FoodFragment();
}
return fragment;
}
@Override
public int getCount() {
return PAGE_NUM;
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context="jp.co.casareal.sample.viewpagersample.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:onClick="onClickGoToTop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Vers la première page"/>
<Button
android:onClick="onClickNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="à la page suivante"/>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Le point ici est que si vous voulez changer la page avec le code source Java, vous pouvez le changer avec la méthode setCurrentItem () de Adapter.
MainActivity.java
package jp.co.casareal.sample.viewpagersample;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import jp.co.casareal.sample.viewpagersample.adapter.UserInfoViewPagerAdapter;
public class MainActivity extends AppCompatActivity {
private ViewPager pager;
private FragmentPagerAdapter adapter;
private int currentPage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager = (ViewPager) findViewById(R.id.pager);
adapter = new UserInfoViewPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
currentPage = 0;
}
public void onClickNext(View view) {
currentPage ++;
pager.setCurrentItem(currentPage);
}
public void onClickGoToTop(View view) {
currentPage = 0;
pager.setCurrentItem(currentPage);
}
}
https://developer.android.com/reference/android/support/v13/app/FragmentPagerAdapter.html
https://developer.android.com/training/implementing-navigation/lateral.html
Recommended Posts