Макет ограничения 0dp не работает на Android Просмотр привязки - PullRequest
0 голосов
/ 27 марта 2020

Я использую 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;
    }
}

Но это приводит к ошибкам пользовательского интерфейса примерно так: Ui error due to Android binding

Когда при нормальной инфляции и findViewById он дает правильные результаты: Correct Ui with findViewById apoach

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

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

1 Ответ

0 голосов
/ 28 марта 2020

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

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