[英]Staggered gridview not working properly in android
I am using staggered gridview which is placed inside NestedScrollview.我正在使用放置在 NestedScrollview 内的交错网格视图。 I don't know y it is coming one below the other when loading for the first time(if image cache is not there).
我不知道它在第一次加载时是否低于另一个(如果没有图像缓存)。 Is there any issue with staggered gridview?
交错的gridview有什么问题吗? Or is it because of my layout it is coming like this.
或者是因为我的布局它是这样的。 Anyone please help.
任何人请帮忙。
My layout xml is as follows我的布局xml如下
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:expandedTitleTextAppearance="@android:color/transparent">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleTextAppearance="@android:color/transparent">
<ImageView
android:id="@+id/backdrop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:maxHeight="@dimen/detail_backdrop_maxheight"
android:adjustViewBounds="true"
app:layout_collapseMode="parallax"
android:contentDescription="Top Image"/>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_collapseMode="pin"
app:expandedTitleTextAppearance="@android:color/transparent"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<com.hit.pretstreet.pretstreet.core.customview.TextViewPret
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/yellow"
style="@style/textview_normal"
android:id="@+id/tv_heading_photos"
app:pret_typeface="@string/font_redvelvet_regular"/>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rv_images"
android:layout_marginLeft="-2dp"
android:layout_marginRight="-2dp"
android:nestedScrollingEnabled="false"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
Note: I am loading images from server.注意:我正在从服务器加载图像。
Regards问候
At last I got the answer.最后我得到了答案。 It was because I have missed placeholder while loading images.
这是因为我在加载图像时错过了占位符。
recycler_item.xml
recycler_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@color/cardview_dark_background"
tools:context=".MainActivity">
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardPreventCornerOverlap="false"
android:theme="@style/Theme.MaterialComponents.DayNight"
app:cardBackgroundColor="@color/cardview_shadow_start_color"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/ivTemplateThumbnail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/tvTemplateName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:fontFamily="sans-serif-black"
android:text="Poster Maker"
android:textSize="@dimen/_16ssp" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
Recyclerview
回收者视图
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvStaggered"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.StaggeredGridLayoutManager"
app:spanCount="2"
android:orientation="vertical"
tools:itemCount="5"
tools:listitem="@layout/item_staggered_main" />
Inside adapter_recyclerview > onbindviewholder at the time of set image in item imageview using glide use placeholder.
在使用 glide 使用占位符在 item imageview 中设置图像时,在 adapter_recyclerview > onbindviewholder 内部。
@Override
public void onBindViewHolder(@NonNull TemplateListAdapter.TemplateListItemViewHolder holder, int position) {
Glide.with(mContext)
.load(listTemplateData.get(position).getTemplateUrl()).placeholder(R.drawable.placeholdertemplate)
.into(holder.ivTemplateThumbnail);
holder.tvTemplateName.setText(listTemplateData.get(position).getTemplateName());
holder.ivTemplateThumbnail.setOnClickListener(view -> {templateItemClick.onTemplateItemClick(position);});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.