约束布局0dp不适用于Android视图绑定

约束布局0dp不适用于Android视图绑定,android,android-studio,android-viewbinding,Android,Android Studio,Android Viewbinding,我正在使用Android视图绑定(在Android Studio 3.6上)。 我正在使用自动生成的类来膨胀ViewHolder,如 public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { ViewHolderShowAllProductsBinding binding = ViewHolderShowAllProductsBinding.inflate(LayoutInflate

我正在使用Android视图绑定(在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错误:

在正常通货膨胀和findViewById的情况下,它会产生正确的结果:

由于我在有错误的地方使用ConstraintLayout和0dp,这使我相信视图绑定膨胀不能与ConstraintLayout的0dp一起正常工作


我说得对吗?解决方法是什么?

在onCreateViewHolder方法中以这种方式使用数据绑定器

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

在onCreateViewHolder方法中以这种方式使用DatabindingUtils

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

我刚刚设法解决了这个问题,您应该尝试调用
inflate
,使用3个参数传递给parent。而不是这个

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

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

我刚刚设法解决了这个问题,您应该尝试调用
inflate
,使用3个参数传递给parent。而不是这个

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

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