Андроид:ViewPagerIndicator — Создание разных макетов для разных страниц.

StackOverflow https://stackoverflow.com//questions/10694388

Вопрос

Мне нужно создать четыре разных макета, каждый на странице ViewPagerIndicator.Как я могу это сделать?ViewPagerIndicator уже работает, но я использую образец из http://viewpagerindicator.com и создается простой TextView для всех страниц.

См. образец (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;
}

Мне нужно определить текущую страницу (позицию) и обратиться к соответствующему макету ресурса (XML).Является ли это возможным?

Мне также необходимо убедиться, что все представления всех страниц загружаются одновременно только один раз при создании активности, что позволяет обновлять значения позже.

Я ценю любую помощь!!Спасибо

Это было полезно?

Решение

Я нашел простое решение, которое работает для меня.Вот что я сделал.

TestFragment.класс

      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;
    }

Закомментируйте цикл for здесь.Просто возьми mContent который мы собираемся использовать в качестве флага.

Теперь в твоем onCreateView() измените его следующим образом:

   @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;

    }

Это все, что нужно.Теперь вы сможете расширить свои представления на основе названия заголовка, которое мы использовали в качестве флага.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top