Я пытаюсь изменить количество столбцов, отображаемых в представлении recycler (макет сетки) на основе размера экрана. Однако я не мог найти подходящего способа его достижения. В настоящее время я использую treeViewObserver
для изменения количества столбцов на основе изменения размера экрана (во время ориентации). Поэтому, если приложение открывается в портретном режиме, количество столбцов (по телефону), оно решает быть одним, что хорошо выглядит, но этот метод не работает, когда приложение открывается прямо в ландшафтном режиме, когда одна сетчатая карта в сетке отображается на экране.
Здесь recList - это RecyclerView, а glm - GridLayoutManager, используемый в RecyclerView
viewWidth = recList.getMeasuredWidth();
cardViewWidthZZ = recList.getChildAt(0).getMeasuredWidth();
if (oldWidth == 0) {
oldWidth = cardViewWidthZZ;
}
if (oldWidth <= 0)
return;
int newSpanCount = (int) Math.floor(viewWidth / (oldWidth / 1.3f));
if (newSpanCount <= 0)
newSpanCount = 1;
glm.setSpanCount(newSpanCount);
glm.requestLayout();
С наилучшими пожеланиями