android.support.v7.widget.StaggeredGridLayoutManager#LayoutParams ( )源码实例Demo

下面列出了android.support.v7.widget.StaggeredGridLayoutManager#LayoutParams ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

/**
 * orientation为Vertical时调用,处理Vertical下的Offset
 * {@link #getItemOffsets(Rect, View, RecyclerView, RecyclerView.State)}
 */
private void handleVertical(@NonNull Rect outRect, @NonNull View view,
                            @NonNull RecyclerView parent) {
    StaggeredGridLayoutManager.LayoutParams params =
            (StaggeredGridLayoutManager.LayoutParams) view.getLayoutParams();
    int spanIndex = params.getSpanIndex();
    int adapterPos = parent.getChildAdapterPosition(view);
    int sizeAvg = (int) ((mHorizontal * (mSpanCount - 1) + mLeft + mRight) * 1f / mSpanCount);
    int left = computeLeft(spanIndex, sizeAvg);
    int right = computeRight(spanIndex, sizeAvg);
    outRect.left = left;
    outRect.right = right;
    outRect.top = mVertical / 2;
    outRect.bottom = mVertical / 2;
    if (isFirstRaw(adapterPos, spanIndex)) {
        //第一行
        outRect.top = mTop;
    }
    if (isLastRaw(spanIndex)) {
        //最后一行
        outRect.bottom = mBottom;
    }
}
 
private void prepareHeaderFooter(HeaderFooterViewHolder vh, View view) {

        // if it's a staggered grid, span the whole layout
        if (mManagerType == TYPE_MANAGER_STAGGERED_GRID) {
            StaggeredGridLayoutManager.LayoutParams layoutParams = new StaggeredGridLayoutManager.LayoutParams
					(ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.MATCH_PARENT);
            layoutParams.setFullSpan(true);
            vh.itemView.setLayoutParams(layoutParams);
        }

        // if the view already belongs to another layout, remove it
        if (view.getParent() != null) {
            ((ViewGroup) view.getParent()).removeView(view);
        }

        // empty out our FrameLayout and replace with our header/footer
        vh.base.removeAllViews();
        vh.base.addView(view);

    }
 
源代码3 项目: styT   文件: HeaderAndFooterWrapper.java
@Override
public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
    super.onViewAttachedToWindow(holder);
    int position = holder.getLayoutPosition();
    if (isHeaderViewPos(position) || isFooterViewPos(position)) {
        ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();

        if (lp != null
                && lp instanceof StaggeredGridLayoutManager.LayoutParams) {

            StaggeredGridLayoutManager.LayoutParams p =
                    (StaggeredGridLayoutManager.LayoutParams) lp;

            p.setFullSpan(true);
        }
    }
}
 
源代码4 项目: MvpRoute   文件: BaseAdapter.java
/**
 * 解决StaggeredGridLayoutManager问题
 *
 * @param holder
 */
@Override
public void onViewAttachedToWindow(V holder) {
	super.onViewAttachedToWindow(holder);
	int position = holder.getLayoutPosition();
	if (isHeaderPos(position) || isFooterPos(position)) {
		ViewGroup.LayoutParams lp = holder.getItemView().getLayoutParams();
		if (lp != null
				&& lp instanceof StaggeredGridLayoutManager.LayoutParams) {

			StaggeredGridLayoutManager.LayoutParams p =
					(StaggeredGridLayoutManager.LayoutParams) lp;

			p.setFullSpan(true);
		}
	}
}
 
@Override
public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
    mInnerAdapter.onViewAttachedToWindow(holder);
    int position = holder.getLayoutPosition();
    if (isHeaderViewPos(position) || isFooterViewPos(position)) {
        ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();

        if (lp != null
                && lp instanceof StaggeredGridLayoutManager.LayoutParams) {

            StaggeredGridLayoutManager.LayoutParams p =
                    (StaggeredGridLayoutManager.LayoutParams) lp;

            p.setFullSpan(true);
        }
    }
}
 
源代码6 项目: YCRefreshView   文件: StageredLoadMoreAdapter.java
@Override
public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
    super.onViewAttachedToWindow(holder);
    ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams();
    if (layoutParams != null && layoutParams instanceof StaggeredGridLayoutManager.LayoutParams) {
        StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) layoutParams;
        int position = holder.getLayoutPosition();
        //如果是上拉加载更多类型,则设置setFullSpan为true,那么它就会占一行
        if (getItemViewType(position) == footType) {
            params.setFullSpan(true);
        }
    }
}
 
@Override
public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
    mAdapter.onViewAttachedToWindow(holder);
    int position = holder.getLayoutPosition();
    if (isHeaderViewPos(position) || isFooterViewPos(position)) {
        ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();
        if (lp != null
                && lp instanceof StaggeredGridLayoutManager.LayoutParams) {
            StaggeredGridLayoutManager.LayoutParams p =
                    (StaggeredGridLayoutManager.LayoutParams) lp;
            p.setFullSpan(true);
        }
    }
}
 
源代码8 项目: Shield   文件: ShieldDisplayNodeAdapter.java
private void onBindViewHolder(@NonNull DNViewHolder holder, int position, @NonNull ShieldDisplayNode displayNode) {
    isOnBind = true;
    if (holder.itemView instanceof DisplayNodeContainer) {
        ShieldDisplayNode oldNode = ((DisplayNodeContainer) holder.itemView).getNode();
        if (oldNode != null) {
            oldNode.containerView = null;
        }
        ((DisplayNodeContainer) holder.itemView).setNode(displayNode);
        displayNode.containerView = (DisplayNodeContainer) holder.itemView;
        displayNode.view = ((DisplayNodeContainer) holder.itemView).getSubView();
    } else {
        displayNode.containerView = null;
        displayNode.view = holder.itemView;
    }
    holder.displayNode = displayNode;
    if (displayNode.viewPaintingCallback != null) {
        displayNode.viewPaintingCallback.updateView(displayNode.view, displayNode, displayNode.getPath());
    }

    //add StaggeredGrid support
    StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) displayNode.containerView.getLayoutParams();
    if (displayNode.rowParent != null
            && displayNode.rowParent.sectionParent instanceof StaggeredGridSection
            && displayNode.getPath() != null
            && (displayNode.getPath().cellType == CellType.NORMAL
            || displayNode.getPath().cellType == CellType.LOADING_MORE)) {
        layoutParams.setFullSpan(false);
    } else {
        layoutParams.setFullSpan(true);
    }
    displayNode.containerView.setLayoutParams(layoutParams);
    isOnBind = false;
}
 
源代码9 项目: v9porn   文件: MeiZiTuAdapter.java
@Override
protected void convert(BaseViewHolder helper, MeiZiTu item) {
    ImageView imageView = helper.getView(R.id.iv_item_mei_zi_tu);
    GlideApp.with(helper.itemView.getContext()).load(buildGlideUrl(item.getThumbUrl())).transition(new DrawableTransitionOptions().crossFade(300)).into(imageView);
    int height;
    if (!heightMap.containsKey(item.getThumbUrl())) {
        height = item.getHeight() * width / item.getWidth();
        heightMap.put(item.getThumbUrl(), height);
    } else {
        height = heightMap.get(item.getThumbUrl());
    }
    StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) helper.itemView.getLayoutParams();
    layoutParams.height = height;
    helper.itemView.setLayoutParams(layoutParams);
}
 
源代码10 项目: kernel_adiutor   文件: DParent.java
private void setUpLayout() {
    if (fullspan && view != null) {
        StaggeredGridLayoutManager.LayoutParams layoutParams =
                new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                        ViewGroup.LayoutParams.WRAP_CONTENT);
        layoutParams.setFullSpan(true);
        int padding = view.getContext().getResources().getDimensionPixelSize(R.dimen.basecard_padding);
        layoutParams.setMargins(padding, padding, padding, 0);
        view.setLayoutParams(layoutParams);
    }
}
 
源代码11 项目: v9porn   文件: HuaBanAdapter.java
@Override
protected void convert(BaseViewHolder helper, HuaBan.Picture item) {
    ImageView imageView = helper.getView(R.id.iv_item_hua_ban);
    GlideApp.with(helper.itemView.getContext()).load(item.getPictureUrl(item.getPictureKey(), width)).transition(new DrawableTransitionOptions().crossFade(300)).into(imageView);
    int height;
    if (!heightMap.containsKey(item.getPictureKey())) {
        height = item.getPictureHeight() * width / item.getPictureWidth();
        heightMap.put(item.getPictureKey(), height);
    } else {
        height = heightMap.get(item.getPictureKey());
    }
    StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) helper.itemView.getLayoutParams();
    layoutParams.height = height;
    helper.itemView.setLayoutParams(layoutParams);
}
 
源代码12 项目: likequanmintv   文件: LoadMoreCommonAdapter.java
private void setFullSpan(RecyclerView.ViewHolder holder)
{
    ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();

    if (lp != null
            && lp instanceof StaggeredGridLayoutManager.LayoutParams)
    {
        StaggeredGridLayoutManager.LayoutParams p = (StaggeredGridLayoutManager.LayoutParams) lp;

        p.setFullSpan(true);
    }
}
 
@Override
public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
    super.onViewAttachedToWindow(holder);
    ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();
    if (lp != null
            && lp instanceof StaggeredGridLayoutManager.LayoutParams
            && ((holder.getLayoutPosition() == this.getItemCount() - 1 && hasFootView())
            || (holder.getLayoutPosition() < getHeaderViewCount()) && hasHeaderView())) {
        StaggeredGridLayoutManager.LayoutParams p = (StaggeredGridLayoutManager.LayoutParams) lp;
        p.setFullSpan(true);
    }
}
 
@Override
public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) {
    int position = holder.getAdapterPosition();

    if (isHeaderView(position) || isFooterView(position)) {
        ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();
        if (lp != null && lp instanceof StaggeredGridLayoutManager.LayoutParams) {
            StaggeredGridLayoutManager.LayoutParams p = (StaggeredGridLayoutManager.LayoutParams) lp;
            p.setFullSpan(true);
        }
    } else {
        mAdapter.onViewAttachedToWindow(holder);
    }
}
 
源代码15 项目: Bailan   文件: WrapperUtils.java
public static void setFullSpan(RecyclerView.ViewHolder holder) {
    ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();

    if (lp != null
            && lp instanceof StaggeredGridLayoutManager.LayoutParams) {

        StaggeredGridLayoutManager.LayoutParams p = (StaggeredGridLayoutManager.LayoutParams) lp;

        p.setFullSpan(true);
    }
}
 
源代码16 项目: MeiZiNews   文件: BaseHeadRecyclerAdapter.java
@Override
public void onViewAttachedToWindow(BaseAdapterHelper holder) {
    super.onViewAttachedToWindow(holder);
    ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();
    if (lp != null
            && lp instanceof StaggeredGridLayoutManager.LayoutParams
            && holder.getLayoutPosition() == 0) {
        StaggeredGridLayoutManager.LayoutParams p = (StaggeredGridLayoutManager.LayoutParams) lp;
        p.setFullSpan(true);
    }

}
 
源代码17 项目: customview-samples   文件: FlexAdapter.java
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
    View view = LayoutInflater.from(viewGroup.getContext())
            .inflate(getLayoutId(viewType), viewGroup, false);
    if(viewType != ITEM_TYPE_4) {
        Pair<Integer, Integer> pair = getWHRatioByType(viewGroup.getWidth(), ITEM_HEIGHT, viewType);
        view.setLayoutParams(new ViewGroup.LayoutParams(pair.first, pair.second));
    }else{
        StaggeredGridLayoutManager.LayoutParams layoutParams = new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,SizeUtils.dp2px(50));
        layoutParams.setFullSpan(true);
        view.setLayoutParams(layoutParams);
    }
    return new FlexViewHolder(view);
}
 
源代码18 项目: candybar-library   文件: HomeAdapter.java
IconRequestViewHolder(View itemView) {
    super(itemView);
    title = itemView.findViewById(R.id.title);
    installedApps = itemView.findViewById(R.id.installed_apps);
    missedApps = itemView.findViewById(R.id.missed_apps);
    themedApps = itemView.findViewById(R.id.themed_apps);
    progress = itemView.findViewById(R.id.progress);
    container = itemView.findViewById(R.id.container);

    CardView card = itemView.findViewById(R.id.card);
    if (CandyBarApplication.getConfiguration().getHomeGrid() == CandyBarApplication.GridStyle.FLAT) {
        if (card.getLayoutParams() instanceof StaggeredGridLayoutManager.LayoutParams) {
            card.setRadius(0f);
            card.setUseCompatPadding(false);
            int margin = mContext.getResources().getDimensionPixelSize(R.dimen.card_margin);
            StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) card.getLayoutParams();
            params.setMargins(0, 0, margin, margin);

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                params.setMarginEnd(margin);
            }
        }
    }

    if (!Preferences.get(mContext).isCardShadowEnabled()) {
        card.setCardElevation(0);
    }

    int color = ColorHelper.getAttributeColor(mContext, android.R.attr.textColorPrimary);
    title.setCompoundDrawablesWithIntrinsicBounds(DrawableHelper.getTintedDrawable(
            mContext, R.drawable.ic_toolbar_icon_request, color), null, null, null);

    int accent = ColorHelper.getAttributeColor(mContext, R.attr.colorAccent);
    progress.getProgressDrawable().setColorFilter(accent, PorterDuff.Mode.SRC_IN);

    container.setOnClickListener(this);
}
 
源代码19 项目: candybar-library   文件: AboutAdapter.java
FooterViewHolder(View itemView) {
    super(itemView);
    ImageView instagram = itemView.findViewById(R.id.about_dev_instagram);
    ImageView googlePlus = itemView.findViewById(R.id.about_dev_google_plus);
    ImageView github = itemView.findViewById(R.id.about_dev_github);
    TextView title = itemView.findViewById(R.id.about_dashboard_title);
    TextView licenses = itemView.findViewById(R.id.about_dashboard_licenses);
    TextView contributors = itemView.findViewById(R.id.about_dashboard_contributors);
    TextView translator = itemView.findViewById(R.id.about_dashboard_translator);

    CardView card = itemView.findViewById(R.id.card);
    if (CandyBarApplication.getConfiguration().getAboutStyle() == CandyBarApplication.Style.PORTRAIT_FLAT_LANDSCAPE_FLAT &&
            card != null) {
        if (card.getLayoutParams() instanceof StaggeredGridLayoutManager.LayoutParams) {
            card.setRadius(0f);
            card.setUseCompatPadding(false);
            int margin = mContext.getResources().getDimensionPixelSize(R.dimen.card_margin);
            StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) card.getLayoutParams();
            params.setMargins(0, 0, margin, margin);

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                params.setMarginEnd(margin);
            }
        }
    }

    if (!Preferences.get(mContext).isCardShadowEnabled()) {
        if (card != null) card.setCardElevation(0);
    }

    int color = ColorHelper.getAttributeColor(mContext, android.R.attr.textColorPrimary);
    title.setCompoundDrawablesWithIntrinsicBounds(DrawableHelper.getTintedDrawable(
            mContext, R.drawable.ic_toolbar_dashboard, color), null, null, null);

    color = ConfigurationHelper.getSocialIconColor(mContext,
            CandyBarApplication.getConfiguration().getSocialIconColor());
    instagram.setImageDrawable(DrawableHelper.getTintedDrawable(mContext, R.drawable.ic_toolbar_instagram, color));
    googlePlus.setImageDrawable(DrawableHelper.getTintedDrawable(mContext, R.drawable.ic_toolbar_google_plus, color));
    github.setImageDrawable(DrawableHelper.getTintedDrawable(mContext, R.drawable.ic_toolbar_github, color));

    instagram.setOnClickListener(this);
    googlePlus.setOnClickListener(this);
    github.setOnClickListener(this);
    licenses.setOnClickListener(this);
    contributors.setOnClickListener(this);
    translator.setOnClickListener(this);
}
 
源代码20 项目: candybar-library   文件: HomeAdapter.java
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    try {
        if (holder.itemView != null) {
            StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams)
                    holder.itemView.getLayoutParams();
            layoutParams.setFullSpan(isFullSpan(holder.getItemViewType()));
        }
    } catch (Exception e) {
        LogUtil.d(Log.getStackTraceString(e));
    }

    if (holder.getItemViewType() == TYPE_HEADER) {
        HeaderViewHolder headerViewHolder = (HeaderViewHolder) holder;

        headerViewHolder.title.setText(mContext.getResources().getString(R.string.home_title));
        headerViewHolder.content.setHtml(mContext.getResources().getString(R.string.home_description));

        String uri = mContext.getResources().getString(R.string.home_image);
        if (URLUtil.isValidUrl(uri)) {
            ImageLoader.getInstance().displayImage(uri,
                    headerViewHolder.image, ImageConfig.getDefaultImageOptions(true));
        } else if (ColorHelper.isValidColor(uri)) {
            headerViewHolder.image.setBackgroundColor(Color.parseColor(uri));
        } else {
            uri = "drawable://" + DrawableHelper.getResourceId(mContext, uri);

            ImageLoader.getInstance().displayImage(uri,
                    headerViewHolder.image, ImageConfig.getDefaultImageOptions(true));
        }
    } else if (holder.getItemViewType() == TYPE_CONTENT) {
        ContentViewHolder contentViewHolder = (ContentViewHolder) holder;
        int finalPosition = position - 1;

        int color = ColorHelper.getAttributeColor(mContext, android.R.attr.textColorPrimary);
        if (mHomes.get(finalPosition).getIcon() != -1) {
            if (mHomes.get(finalPosition).getType() == Home.Type.DIMENSION) {
                contentViewHolder.autoFitTitle.setCompoundDrawablesWithIntrinsicBounds(
                        DrawableHelper.getResizedDrawable(mContext,
                                DrawableHelper.get(mContext, mHomes.get(finalPosition).getIcon()),
                                40),
                        null, null, null);
            } else {
                contentViewHolder.autoFitTitle.setCompoundDrawablesWithIntrinsicBounds(DrawableHelper.getTintedDrawable(
                        mContext, mHomes.get(finalPosition).getIcon(), color), null, null, null);
            }
        }

        if (mHomes.get(finalPosition).getType() == Home.Type.ICONS) {
            contentViewHolder.autoFitTitle.setSingleLine(true);
            contentViewHolder.autoFitTitle.setMaxLines(1);
            contentViewHolder.autoFitTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX,
                    mContext.getResources().getDimension(R.dimen.text_max_size));
            contentViewHolder.autoFitTitle.setGravity(Gravity.END | Gravity.CENTER_VERTICAL);
            contentViewHolder.autoFitTitle.setIncludeFontPadding(false);
            contentViewHolder.autoFitTitle.setSizeToFit(true);

            contentViewHolder.subtitle.setGravity(Gravity.END | Gravity.CENTER_VERTICAL);
        } else {
            contentViewHolder.autoFitTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX, mContext.getResources()
                    .getDimension(R.dimen.text_content_title));
        }

        contentViewHolder.autoFitTitle.setText(mHomes.get(finalPosition).getTitle());

        if (mHomes.get(finalPosition).getSubtitle().length() > 0) {
            contentViewHolder.subtitle.setText(mHomes.get(finalPosition).getSubtitle());
            contentViewHolder.subtitle.setVisibility(View.VISIBLE);
        }
    } else if (holder.getItemViewType() == TYPE_ICON_REQUEST) {
        IconRequestViewHolder iconRequestViewHolder = (IconRequestViewHolder) holder;

        int installed = CandyBarMainActivity.sInstalledAppsCount;
        int missed = CandyBarMainActivity.sMissedApps == null ?
                installed : CandyBarMainActivity.sMissedApps.size();
        int themed = installed - missed;

        iconRequestViewHolder.installedApps.setText(String.format(
                mContext.getResources().getString(R.string.home_icon_request_installed_apps),
                installed));
        iconRequestViewHolder.missedApps.setText(String.format(
                mContext.getResources().getString(R.string.home_icon_request_missed_apps),
                missed));
        iconRequestViewHolder.themedApps.setText(String.format(
                mContext.getResources().getString(R.string.home_icon_request_themed_apps),
                themed));

        iconRequestViewHolder.progress.setMax(installed);
        iconRequestViewHolder.progress.setProgress(themed);
    } else if (holder.getItemViewType() == TYPE_WALLPAPERS) {
        WallpapersViewHolder wallpapersViewHolder = (WallpapersViewHolder) holder;

        wallpapersViewHolder.title.setText(
                String.format(mContext.getResources().getString(R.string.home_loud_wallpapers),
                Preferences.get(mContext).getAvailableWallpapersCount()));
    }
}