Макет ограничения 0dp не работает на Android View Binding

Я использую Android View Binding (на Android Studio 3.6). Я использую автоматически сгенерированные классы, чтобы надуть ViewHolder, как

public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    ViewHolderShowAllProductsBinding binding = ViewHolderShowAllProductsBinding.inflate(LayoutInflater.from(parent.getContext()));
    return new MyViewHolder(binding);
}

И MyViewHolder выглядит так:

class MyViewHolder extends RecyclerView.ViewHolder {
    public ViewHolderShowAllProductsBinding binding;

    public MyViewHolder(ViewHolderShowAllProductsBinding binding) {
        super(binding.getRoot());
        this.binding = binding;
    }
}

Но это приводит к ошибкам интерфейса, например: Ошибка пользовательского интерфейса из-за привязки Android

Когда с нормальной инфляцией и findViewById он выдает правильные результаты: Исправьте пользовательский интерфейс с помощью findViewById

Так как я использую ConstraintLayout и 0dp в местах, где есть ошибки, это заставляет меня полагать, что инфляция View Binding не работает должным образом с 0dp ConstraintLayout.

Я прав? Какой обходной путь?

Всего 1 ответ


Используйте DatabindingUtils таким образом в методе onCreateViewHolder

DataBindingUtil.inflate(LayoutInflater.from(viewGroup.getContext()),
                    R.layout.your_layout, viewGroup, false);

Есть идеи?

10000