约束布局0dp不适用于Android视图绑定
我正在使用Android视图绑定(在Android Studio 3.6上)。 我正在使用自动生成的类来膨胀ViewHolder,如约束布局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
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);
}