Вы используете ItemDecorations для того, чтобы делать что-то, для чего они не предназначены, но вы не хотите использовать правильную вещь, и теперь вы хотите взломать решение?(Я правильно понял?)
В вашем стремлении разгадать эту загадку я дам вам 0.02c:
- ItemDecorations не предназначены для того, чтобы делать то, что вам нужночтобы сделать, следовательно, почему вы видите эти побочные эффекты.
- ItemDecorations - это способ RecyclerView дать вам возможность «украсить» представление, имея холст и несколько миллисекунд для рисования чего-либо на экране,полностью отсоединен от двигателя View / Layout / Measure.
- Вы специально запретили использование полей элемента (и отступов?) Из-за "динамического порядка".Я не совсем уверен, какой порядок имеет отношение к этому, но я не могу сражаться с вами на этом фронте;какой заказ?заказ товара?какое отношение заказ имеет к полям или интервалу?(Я уверен, что есть причины, вы не перечислили их).Как порядок повлияет на это?Различны ли поля / интервалы с разных сторон, потому что элементы разные?Я предполагаю это, потому что вы предоставляете небольшую подсказку в этом
if (item == type_xxx) {}
, поэтому я предполагаю, что вы используете какой-то itemType для рендеринга различных представлений в вашем представлении переработчика, и теперь вы хотите добавить некоторые динамические поля к этим элементам на основеих соседи.
Я предполагаю все это.
Ответ: вы не можете рисовать за пределами представления из ItemDecorator, потому что, как бы он ни был крут, холст, переданный на него (так что он может рисовать), уже рассчитан и ограничен мерой / макетом Androidдвигатель.
Также:
android:clipChildren="false"
android:clipToPadding="false"
имеет побочные эффекты (производительность невелика).
Помимо производительности, вы просто не можете (или, скорее, не должны!) Пытаться сделать это таким образом.Декорации не должны быть открытыми для розыгрыша в любом месте.Я предлагаю вам предоставить надлежащие отступы / поля, где это относится, в представлениях элементов и / или в представлении реселлера.Они могут работать с пикселями плотности, а также учитывать варианты сборки и варианты, когда они предоставляются через ресурсы (например, измерениеs.xml).
Ни одна из этих технологий не будет доступна для декоратора элементов,Но если вы также проигнорируете разделение кода, принцип единой ответственности, инверсию контроля и все эти жаргоны, вы все равно не сможете это сделать, потому что ваш холст для вас предварительно рассчитан, и ваши мечты нарисовать где-нибудь наscreen.
(хорошо, вы можете рисовать где угодно, но это не НАЖИМАЕТ другие виды, вы просто рисуете поверх содержимого, не касаясь его).