Дополнительно
Изменение количества столбцов с GridLayoutManager и RecyclerView
В моем фрагменте я'м сидит мой GridLayout следующим образом:
mRecycler.setLayoutManager(новый GridLayoutManager(rootView.метода getcontext(), 2));
Итак, я просто хочу это изменить 2
на 4
, когда пользователь поворачивает телефон/планшет. Я'ве читать про onConfigurationChanged
и я пытался заставить его работать для моего случая, но это вовсе'т иду в правильном направлении. Когда я повернуть мой телефон, приложение падает...
Не могли бы вы сказать мне, как решить эту проблему?
Вот мой подход, чтобы найти решение, которое работает неправильно:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
int orientation = newConfig.orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
mRecycler.setLayoutManager(new GridLayoutManager(mContext, 2));
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
mRecycler.setLayoutManager(new GridLayoutManager(mContext, 4));
}
}
Заранее спасибо!
55
7
Если у вас есть более чем одно условие или значение в несколько мест, это может перейти из рук довольно быстро. Я предлагаю создать следующую структуру:
с res/values/dimens.xml быть:
и res/values-land/dimens.xml быть:
И тогда код становится (и навсегда остается) такой:
Вы можете легко увидеть, как легко это, чтобы добавить новые способы определения количества столбцов, например, используя
-w500dp
/-w600dp
/-w700dp ресурсные папки вместо
земля`.Это's также довольно легко сгруппировать эти папки в отдельную папку ресурсов в случае, если вы не'т хотите загромождать другие (более актуально) ресурсов:
То в вашем методе onCreateView, поскольку в нем будет вызываться каждый раз, когда там'с изменением ориентации:
Просмотр корзины поддерживает AutofitRecycleView.
Вы должны добавить
андроид:numColumns="и auto_fit"
В В вашего XML-файла.Вы можете обратиться к этой AutofitRecycleViewLink
Более надежный способ определения нет. столбцов будет рассчитать в зависимости от ширины экрана и во время выполнения. Я обычно использую следующую функцию для этого.
Это более динамичный способ для точного расчета нет. из колонны. Это будет более адаптивной для пользователей различные размеры экрана без д только двух возможных значений.
Примечание: Вы можете изменять значение проведенного scalingFactor переменной. Чем меньше это больше нет. из колонки вы можете отобразить, и чем больше значение, тем меньше нет. столбцов будет рассчитываться. Это коэффициент масштабирования настроить для ваших нужд.
В методе onCreate (событие) можно использовать StaggeredGridLayoutManager
Затем, когда пользователь вращает захват экрана случае, и автоматически меняется количество столбцов
Я закончил обработку этого в методе onCreate.
Он работал отлично для моего приложения.
Вы можете реализовать метод в onMeasure recyclerView. Во-первых, создать класс java AutofitRecyclerView
В файле макета в XLM activity_main.xml
Затем установите переменную ширину каждого элемента в размер файла значения папку values/dimens.xml
Он может быть для разных разрешений экрана values-xxhdpi/dimens.xml
В вашей деятельности в событие onCreate поместите следующий код