В некоторых случаях изменение только атрибута видимости может по-прежнему заканчиваться выделенным пустым пространством (из-за заполнения родительского представления, полей, внутренних элементов и т. Д.). Тогда изменение высоты родительского вида помогает:
holder.itemView.setVisibility(View.GONE);
holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0));
. Затем убедитесь, что в условии, что оно должно быть видимым, также установите:
holder.itemView.setVisibility(View.VISIBLE);
holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
Это необходимо сделать, потому что viewHolder перерабатывается при прокрутке, если вы измените свойства и не вернете их в их естественное состояние, другие элементы будут уже скрыты, если они повторно используют тот же вид.
Вы можете запустить хранитель экрана, получить дескриптор окна, а затем изменить его родительский элемент на дескриптор формы или дескриптор панели или где угодно.
Когда вы создаете хранитель экрана, вам необходимо поддерживать аргумент командной строки (/ p [HWND]), который сообщит вам, в каких окнах показывать хранитель экрана. Командная строка будет передана вам через панель управления заставкой. вот ссылка на полную спецификацию .