Я только что нашел виновный код. Оказывается виноваты кнопки записи в моем адаптере. они включали следующий метод, который позволял кнопке переполнять представления других элементов адаптера (при нажатии кнопка будет расти, как в WhatsApp, см. изображение ниже)
public void setClip(View v) {
if (v.getParent() == null) {
return;
}
if (v instanceof ViewGroup) {
((ViewGroup) v).setClipChildren(false);
((ViewGroup) v).setClipToPadding(false);
}
if (v.getParent() instanceof View) {//this part is to blame
setClip((View) v.getParent());
}
}
рекурсивная природа метода (замечено уже закомментировано в последних 4 строках метода) в основном устанавливает для clipToPadding и clipChildren значение false для всей иерархии представлений от кнопки записи вверх, что приводит к странному переполнению. В итоге я вручную установил для clipToPadding и clipChildren значение false только для тех представлений, которые были связаны с адаптером (это позволило мне сохранить классную анимацию переполнения кнопки записи без проблем с угасающими краями), и теперь это выглядит довольно (см. Ниже).
