У меня есть фрагмент, который помещен в FrameLayout на MainActivity программно.Во фрагменте мне нужно было GridView .Но это будет исправлено 9 строк и 3 столбца.Там не было бы прокрутки.Итак, я разместил RecyclerView и создал свой собственный LayoutManager, расширяющийся от GridLayoutManager.
@Override
public boolean canScrollVertically() {
return false;
}
эта часть кода обеспечивала блокировку прокрутки.Мне нужен параметр Высота этого FrameLayout и отправить его из фрагмента в адаптер RecyclerView.Потому что я планировал получить размер и разделить его на 9, а затем применить эту новую высоту к каждому элементу.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_catalog_list, container, false);
// Set the adapter
if (view instanceof RecyclerView) {
Context context = view.getContext();
RecyclerView recyclerView = (RecyclerView) view;
DisplayMetrics displaymetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
recyclerView.setLayoutManager(new NonScrollGridLayoutManager(context, columnCount));
recyclerView.setAdapter(new CatalogRecyclerViewAdapter(DummyContent.ITEMS, catalogListener, height - 200));
}
return view;
}
Как вы можете видеть в коде, я получил размер высоты из метрик окна. Не из макета фрагмента.
А в RecyclerViewAdapter я вычисляю высоту
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.fragment_catalog, parent, false);
ViewGroup.LayoutParams params = view.getLayoutParams();
params.height = layoutHeight / 9;
view.setLayoutParams(params);
return new ViewHolder(view);
}
Я пытаюсь получить значение высоты из макета Фрагмент .Но всегда возвращается 0. Что мне делать?Я с нетерпением жду ваших ответов.