代码之家  ›  专栏  ›  技术社区  ›  Alexa289

如何使进度条始终显示在滚动视图的中心屏幕上并滑动刷新布局?

  •  0
  • Alexa289  · 技术社区  · 5 年前

    我有这样的视图层次结构:

    enter image description here

    这是我的xml:

    <androidx.constraintlayout.widget.ConstraintLayout
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/constraintLayout_profile">
    
    
        <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
                android:layout_width="0dp"
                android:layout_height="0dp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintTop_toTopOf="parent" android:id="@+id/swipeRefreshLayout_userControl">
    
    
            <androidx.core.widget.NestedScrollView
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:background="@android:color/white"
                    android:id="@+id/scrollView_user_control"
                    app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintBottom_toBottomOf="parent">
    
                <androidx.constraintlayout.widget.ConstraintLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent">
    
                    <de.hdodenhof.circleimageview.CircleImageView
                            android:id="@+id/imageView_profile_image_user_information"
                            android:layout_width="80dp"
                            android:layout_height="80dp"
                            android:src="@drawable/user"
                            app:civ_border_width="0.5dp"
                            app:civ_border_color="#FF000000" android:layout_marginEnd="8dp"
                            app:layout_constraintEnd_toEndOf="parent"
                            android:layout_marginStart="8dp" app:layout_constraintStart_toStartOf="parent"
                            android:layout_marginTop="16dp" app:layout_constraintTop_toTopOf="parent"/>
                    <TextView
                            android:text="User Fullname"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:id="@+id/textView_user_fullname_user_information" android:layout_marginTop="16dp"
                            app:layout_constraintTop_toBottomOf="@+id/imageView_profile_image_user_information"
                            app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
                            app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
                            android:textSize="18sp"/>
                    <TextView
                            android:text="user@email.com"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:id="@+id/textView_user_email_user_information" app:layout_constraintEnd_toEndOf="parent"
                            android:layout_marginEnd="8dp"
                            app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
                            app:layout_constraintTop_toBottomOf="@+id/textView_user_fullname_user_information"
                            android:layout_marginTop="8dp"/>
                    <TextView
                            android:text="AKAN DIHADIRI"
                            android:layout_width="0dp"
                            android:layout_height="35dp"
                            android:id="@+id/textView_will_come_user_information" app:layout_constraintStart_toStartOf="parent"
                            app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="16dp"
                            app:layout_constraintTop_toBottomOf="@+id/textView_user_email_user_information"
                            android:gravity="center|left"
                            android:paddingStart="16dp" android:background="#D2D1D6"/>
    
                    <ImageView
                            android:src="@drawable/ic_settings"
                            android:layout_width="30dp"
                            android:layout_height="30dp"
                            android:id="@+id/imageView_gear_setting_user_information"
                            app:layout_constraintTop_toTopOf="@+id/imageView_profile_image_user_information"
                            app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="24dp"/>
    
                    <androidx.recyclerview.widget.RecyclerView
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:scrollbars="vertical"
                            app:layout_constraintTop_toBottomOf="@+id/textView_will_come_user_information"
                            app:layout_constraintBottom_toBottomOf="parent"
                            app:layout_constraintEnd_toEndOf="parent"
                            app:layout_constraintStart_toStartOf="parent"
                            tools:listitem="@layout/item_general_event"
                            android:id="@+id/recyclerView_attended_event_user_control"
                            app:layout_constraintHorizontal_bias="1.0"
                            android:nestedScrollingEnabled="false">
                    </androidx.recyclerview.widget.RecyclerView>
    
                    <ImageView
                            android:id="@+id/imageView_verified_icon"
                            android:layout_width="20dp"
                            android:layout_height="20dp"
                            android:layout_marginTop="4dp"
                            android:layout_marginEnd="4dp"
                            app:layout_constraintEnd_toEndOf="@+id/imageView_profile_image_user_information"
                            app:layout_constraintTop_toTopOf="@+id/imageView_profile_image_user_information"
                            app:srcCompat="@drawable/verifiedicon" />
    
    
                </androidx.constraintlayout.widget.ConstraintLayout>
    
    
            </androidx.core.widget.NestedScrollView>
    
            <ProgressBar
                    android:id="@+id/progressBar_user_control"
                    style="?android:attr/progressBarStyle"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:visibility="visible" />
    
    
        </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
    
    
    
    
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    如您所见,在我的滚动视图中有一个回收器视图,还有一个刷卡刷新布局包装它。

    我希望我的进度条永远在屏幕中央。我试着从这里读到: How to make a ProgressBar stay in the center of screen despite scrolling . 据说

    您需要ScrollView与 布局

    我试着实现它,就像上面的图片一样,但是我不知道为什么我的进度条不会出现在屏幕上。

    如果我将进度条放在滚动视图中,如下所示:

    enter image description here

    进度条将出现,但不在屏幕中央。这取决于我的回收站视图中的项目数。那么如何解决这个问题呢?

    1 回复  |  直到 5 年前
        1
  •  0
  •   Md. Asaduzzaman    5 年前

    把你的 ProgressBar 在外面的底部 ConstraintLayout . 检查以下内容:

    <androidx.constraintlayout.widget.ConstraintLayout
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/constraintLayout_profile">
    
    
        <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
            android:layout_width="0dp"
            android:layout_height="0dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toTopOf="parent" android:id="@+id/swipeRefreshLayout_userControl">
    
    
            <androidx.core.widget.NestedScrollView
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:background="@android:color/white"
                android:id="@+id/scrollView_user_control"
                app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintBottom_toBottomOf="parent">
    
                <androidx.constraintlayout.widget.ConstraintLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
    
                    <de.hdodenhof.circleimageview.CircleImageView
                        android:id="@+id/imageView_profile_image_user_information"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:src="@drawable/user"
                        app:civ_border_width="0.5dp"
                        app:civ_border_color="#FF000000" android:layout_marginEnd="8dp"
                        app:layout_constraintEnd_toEndOf="parent"
                        android:layout_marginStart="8dp" app:layout_constraintStart_toStartOf="parent"
                        android:layout_marginTop="16dp" app:layout_constraintTop_toTopOf="parent"/>
                    <TextView
                        android:text="User Fullname"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/textView_user_fullname_user_information" android:layout_marginTop="16dp"
                        app:layout_constraintTop_toBottomOf="@+id/imageView_profile_image_user_information"
                        app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
                        app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
                        android:textSize="18sp"/>
                    <TextView
                        android:text="user@email.com"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/textView_user_email_user_information" app:layout_constraintEnd_toEndOf="parent"
                        android:layout_marginEnd="8dp"
                        app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
                        app:layout_constraintTop_toBottomOf="@+id/textView_user_fullname_user_information"
                        android:layout_marginTop="8dp"/>
                    <TextView
                        android:text="AKAN DIHADIRI"
                        android:layout_width="0dp"
                        android:layout_height="35dp"
                        android:id="@+id/textView_will_come_user_information" app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent" android:layout_marginTop="16dp"
                        app:layout_constraintTop_toBottomOf="@+id/textView_user_email_user_information"
                        android:gravity="center|left"
                        android:paddingStart="16dp" android:background="#D2D1D6"/>
    
                    <ImageView
                        android:src="@drawable/ic_settings"
                        android:layout_width="30dp"
                        android:layout_height="30dp"
                        android:id="@+id/imageView_gear_setting_user_information"
                        app:layout_constraintTop_toTopOf="@+id/imageView_profile_image_user_information"
                        app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="24dp"/>
    
                    <androidx.recyclerview.widget.RecyclerView
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:scrollbars="vertical"
                        app:layout_constraintTop_toBottomOf="@+id/textView_will_come_user_information"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        tools:listitem="@layout/item_general_event"
                        android:id="@+id/recyclerView_attended_event_user_control"
                        app:layout_constraintHorizontal_bias="1.0"
                        android:nestedScrollingEnabled="false">
                    </androidx.recyclerview.widget.RecyclerView>
    
                    <ImageView
                        android:id="@+id/imageView_verified_icon"
                        android:layout_width="20dp"
                        android:layout_height="20dp"
                        android:layout_marginTop="4dp"
                        android:layout_marginEnd="4dp"
                        app:layout_constraintEnd_toEndOf="@+id/imageView_profile_image_user_information"
                        app:layout_constraintTop_toTopOf="@+id/imageView_profile_image_user_information"
                        app:srcCompat="@drawable/verifiedicon" />
    
    
                </androidx.constraintlayout.widget.ConstraintLayout>
            </androidx.core.widget.NestedScrollView>
        </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
    
        <ProgressBar
            android:id="@+id/progressBar_user_control"
            style="?android:attr/progressBarStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:visibility="visible" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>