我希望有一个加载图标显示在RecyclerView的顶部,并在数据加载完成后消失
看起来像是:
任何人都可以帮助我吗?
我的代码显示在RecyclerView上方显示“正在加载...”的TextView,并在加载数据后消失,但RecyclerView仍然可见。
我的XML:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/loaderTV"
android:text="Loading..."
android:layout_above="@+id/eventListRV"/>
<android.support.v7.widget.RecyclerView
android:scrollbars="vertical"
android:id="@+id/eventListRV"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/spinner">
</android.support.v7.widget.RecyclerView>
然后在我的代码中
client.listCreators(request, new Callback<ServiceResponse<Event>>() {
@Override
public void success(ServiceResponse<Event> eventServiceResponse, Response response) {
eventList.addAll(eventServiceResponse.data.results);
Log.i("tag", String.valueOf(eventServiceResponse.data.total));
if (eventList.size() > 60) {
adapter.notifyDataSetChanged();
loadingText.setVisibility(View.GONE);
}
}
但是我希望在加载数据时看看RecyclerView是不可见的,我想在RecyclerView所在的进度条上面,我不希望它成为textview
答案 0 :(得分:14)
match_parent
。 recyclerView.setVisibility(View.GONE);
setVisibility(View.GONE)
隐藏加载布局,使用setVisibility(View.VISIBLE)
显示您的RecyclerView并使用adapter.notifyDataSetChanged()
答案 1 :(得分:1)
对于进度条使用中心用户
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
答案 2 :(得分:1)
为了缩小进度条大小,您可以使用scaleX和scaleY,并调整较小尺寸的值。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frameLayout">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ProgressBar
android:id="@+id/progressBar"
android:visibility="visible"
android:scaleX="0.10"
android:scaleY="0.10"
android:textColor="@color/colorAccent"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_gravity="center"/>
</FrameLayout>
答案 3 :(得分:1)
回收者视图。
使用RelativeLayout
。 ProgressBar
和android:layout_centerInParent="true"
一起准备。
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
在MainViewAdapter extends RecyclerView.Adapter<MainViewAdapter.MyViewHolder>
在onBindViewHolder
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
MainItem mainItem = mainItemList.get(position);
holder.getTextViewTitle().setText(mainItem.getNameMain());
//all your code here...
//After that display progressbar at the below
progressBar.setVisibility(View.GONE);
}
答案 4 :(得分:1)
创建自定义进度对话框布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center"
android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout
android:layout_width="wrap_content"
android:gravity="center"
android:padding="3dp"
android:background="@drawable/dialog_background"
android:layout_height="wrap_content">
<ProgressBar
android:padding="3dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</RelativeLayout>
在Drawable中创建自定义背景
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@android:color/white"/>
<size android:height="60dp" android:width="60dp"/>
</shape>
用Java创建ProgressDialog
public static ProgressDialog mProgressDialog;
定义属性并在创建时显示
mProgressDialog = new ProgressDialog(CategoryActivity.this);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
mProgressDialog.setContentView(R.layout.custom_dailog);
mProgressDialog.getWindow().setBackgroundDrawableResource(
android.R.color.transparent
);
致电ProgressDialog在此处关闭
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
MainItem mainItem = mainItemList.get(position);
holder.getTextViewTitle().setText(mainItem.getNameMain());
//all your code here...
//at end of onBindViewHolder dimiss this
CategoryActivity.mProgressDialog.dismiss();
}
将显示进度对话框,直到将项目加载到recyclerview中,并且在加载项目后将其关闭