Гравитация GridLayoutManager ViewHolder

У меня есть RecyclerView с GridLayoutManager, у которого spanCount равен 2. ViewHolder предназначен для вертикального LinearLayout с ImageView и TextView. LinearLayout имеет setSize, скажем, 100dp на 100dp. Когда я просматриваю свою активность в ландшафтном режиме, я хочу, чтобы каждая ячейка в сетке располагалась по центру в пределах своего диапазона. Но вместо этого каждый выравнивается по левому краю. Итак, еще раз, поскольку у меня диапазон 2, а каждое представление занимает диапазон 1, у меня есть два представления на строку. Я хочу, чтобы каждая строка была центрирована в пределах своего диапазона, а не выравнивалась по левому краю. Как я могу это сделать?


person Nouvel Travay    schedule 08.10.2016    source источник
comment
Вы уже нашли решение?   -  person mDroidd    schedule 06.06.2017


Ответы (1)


вы можете создать новый файл grid_item.xml, который соответствует макету сетки, и соответственно изменить порядок всех ваших представлений внутри. вы можете затем определить логическую переменную в своем классе адаптера, в соответствии с которой вы решите, какой элемент списка/сетки следует раздувать внутри onCreateViewHolder.

     public DataHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                if (isGrid){
                   View view = inflater.inflate(R.layout.grid_item , parent ,false);
                }else{
                   View view = inflater.inflate(R.layout.list_item , parent ,false);
                }
                return new DataHolder(view);
   }

удачи

person nir    schedule 08.10.2016