临时

RecycleView中ItemView设置大小无效

2020-05-26  本文已影响0人  Allenlll
 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GlideViewHolder {
            var view = LayoutInflater.from(parent.context).inflate(R.layout.item_recycle_glide,parent,false)
            return GlideViewHolder(view)
        }

在onCreateViewHolder方法中inflateview时没有传入parent:
var view = LayoutInflater.from(parent.context).inflate(R.layout.item_recycle_glide,null)

 /**
     * 解析一个新的View
     *
     * @param resource ID 新View的资源ID
     * @param root 可选的 解析出来的新View的ParentView(如果attachToRoot设置为true), 或者只是为新View提供了LayoutParams值 (如果attachToRoot设置为false.)
     * @param attachToRoot 如果是false,仅仅为新view提供了roo和LayoutParams值 ,并没有依附于root
     */
    public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) {
    
    }
  1. ViewHolder创建时attatchToRoot不能传true,否则会报异常IllegalStateException: ViewHolder views must not be attached when created.
  2. ViewHolder创建时需要parent(RecycleView)的LayoutParams信息
  3. 在自定义View中如果attatchToRoot设置为true,则不需要手动调用addView方法,就已经添加到了parent中。否则报java.lang.IllegalStateException: The specified child already has a parent.
  4. 在自定义View中如果parent不为空,attatchToRoot为false,则是为了让自定义View中设置的layout_width和layout_height有效。因为这两个参数只有在有一个容器的时候才会有效。否则自定义View根节点宽高设置无效
  5. 自定义ViewInflate的写法
  private void init(){
        View layout = LayoutInflater.from(getContext()).inflate(R.layout.face_icon_grid, this,true);
上一篇下一篇

猜你喜欢

热点阅读