Как в фрагмент добавить 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.