Как в фрагмент добавить ScrollView?

В MainActivity есть 2 кнопки которые вызывает фрагмент 1 и фрагмент 2. Во фрагменте #1 имеется ScrollView

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.fragment_first, container, false);
    ScrollView scrollView = new ScrollView(container.getContext());
    LinearLayout linearLayout = new LinearLayout(container.getContext());
    linearLayout.setOrientation(LinearLayout.VERTICAL);
    //LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(-2,-2);

    for (int i=0; i<50; i++) {
        TextView textView = new TextView(container.getContext());
        textView.setTextSize(30);
        textView.setLayoutParams(new ViewGroup.LayoutParams(-2,-2));
        textView.setText("Items:" + String.valueOf(i+1));
        linearLayout.addView(textView);

    }
    scrollView.addView(linearLayout);
    container.addView(scrollView);
    return view;
}

Ответы (1 шт):

Автор решения: woesss

Если уж вы решили создавать представление программно, то его вы и должны вернуть в своей реализации метода onCreateView():

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // эта строка не используется
    // View view = inflater.inflate(R.layout.fragment_first, container, false);

    ScrollView scrollView = new ScrollView(container.getContext());
    LinearLayout linearLayout = new LinearLayout(container.getContext());
    linearLayout.setOrientation(LinearLayout.VERTICAL);
    //LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(-2,-2);

    for (int i=0; i<50; i++) {
        TextView textView = new TextView(container.getContext());
        textView.setTextSize(30);
        textView.setLayoutParams(new ViewGroup.LayoutParams(-2,-2));
        textView.setText("Items:" + String.valueOf(i+1));
        linearLayout.addView(textView);

    }
    scrollView.addView(linearLayout);
    return scrollView; // здесь возвращаем то, что создали
}

Правильность параметров вью я не проверял, если что.
Всё то же самое можно было описать в макете fragment_first.xml и создать одной строкой

return inflater.inflate(R.layout.fragment_first, container, false);

Но по количеству строк текста похоже что вы пытаетесь сотворить список - а для этого лучше использовать специальные списочные контейнеры. Рекомендуется RecyclerView, для примитивных небольших списков-менюшек можно старый ListView.

→ Ссылка