Android:ViewPagerIndicator - Création de différentes mises en page pour différentes pages
-
12-12-2019 - |
Question
Je dois créer quatre mises en page différentes, chacune sur une page de ViewPagerIndicator.Comment puis-je faire ceci?Le ViewPagerIndicator fonctionne déjà, mais j'utilise l'exemple de http://viewpagerindicator.com et un simple TextView est créé pour toutes les pages.
Voir l'exemple (TestFragment.java) :
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
TextView text = new TextView(getActivity());
text.setGravity(Gravity.CENTER);
text.setText(mContent);
text.setTextSize(20 * getResources().getDisplayMetrics().density);
text.setPadding(20, 20, 20, 20);
LinearLayout layout = new LinearLayout(getActivity());
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
layout.setGravity(Gravity.CENTER);
layout.addView(text);
return layout;
}
Je dois identifier la page actuelle (position) et faire référence à une présentation de ressource associée (XML).Est-il possible?
Je dois également m'assurer que toutes les vues de toutes les pages soient chargées en même temps une seule fois lorsque je crée l'activité, permettant ainsi la mise à jour des valeurs ultérieurement.
J'apprécie toute aide !!Merci
La solution
J'ai trouvé une solution simple qui fonctionne pour moi.Voici ce que j'ai fait.
TestFragment.class
public static TestFragment newInstance(String content) {
TestFragment fragment = new TestFragment();
//
// StringBuilder builder = new StringBuilder();
// for (int i = 0; i < 20; i++) {
// builder.append(content).append(" ");
// }
// builder.deleteCharAt(builder.length() - 1);
fragment.mContent = content;
return fragment;
}
Commentez la boucle for ici.Obtenez juste le mContenu que nous allons utiliser comme drapeau.
Maintenant dans votre onCreateView()
changez-le comme suit,
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// TextView text = new TextView(getActivity());
// text.setGravity(Gravity.CENTER);
// text.setText(mContent);
// text.setTextSize(20 * getResources().getDisplayMetrics().density);
// text.setPadding(20, 20, 20, 20);
//
// LinearLayout layout = new LinearLayout(getActivity());
// layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
// layout.setGravity(Gravity.CENTER);
// layout.addView(text);
Log.i("mContent",mContent);
View view=null;
if(mContent.equalsIgnoreCase("title1"))
{
view = inflater.inflate(R.layout.one, container, false);
}
else if(mContent.equalsIgnoreCase("title2"))
{
view = inflater.inflate(R.layout.two, container, false);
}
else if(mContent.equalsIgnoreCase("title3"))
{
view = inflater.inflate(R.layout.three, container, false);
}
return view;
}
Voilà tout ce qu'il faut.Vous pourrez désormais gonfler vos vues en fonction du nom du titre que nous avons utilisé comme drapeau.