片段视图首次打开时为空白或折叠

leo*_*ojg 5 android android-layout android-fragments

我正在处理一个奇怪的问题,我有点迷失了该走哪个方向:

我有一个从应用程序中的多个位置打开的片段(它显示用户个人资料)。大多数地方都可以,但特别是在一个地方,它有一个奇怪的行为,第一次打开时,大多数视图都是空白的,但有些像个人资料图片和工具栏标题是可以的,如果我返回并输入它然后所有视图都按预期可见。

我尝试了几种方法来解决这个问题,特别是,一种是调用activity.recreate()片段onCreateView(),使视图可见,但有一些我想避免的副作用,而且只是一个补丁,不直接处理问题。

现在,对我来说最奇怪的部分是,如果我在布局检查器中打开屏幕,我会看到以下内容:

在此输入图像描述

正如您所看到的,文本视图和其他元素已设置,但只是不可见。

我尝试过的一个实验是给一个文本视图一个固定的宽度,在这种情况下它是可见的,这可能是constraintLayout的一些问题吗?

还有其他想法吗?

提前致谢!

编辑:

另一件事是,viewstubs 在这里有什么作用吗?

这是布局:

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="false">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@+id/collapsingToolBar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:elevation="0dp"
            android:fitsSystemWindows="true"
            app:expandedTitleGravity="top"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:titleEnabled="false">

            <androidx.constraintlayout.widget.ConstraintLayout
                style="@style/ProfileContainer"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="?attr/actionBarSize"
                android:elevation="0dp"
                android:paddingBottom="@dimen/padding_margin_large_20">

                <include
                        layout="@layout/common_profile_picture"
                        style="@style/ProfileImage"
                        android:id="@+id/userPicture"
                        android:layout_width="@dimen/round_avatar_size"
                        android:layout_height="@dimen/round_avatar_size"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintStart_toStartOf="parent"/>

                <androidx.constraintlayout.widget.Group
                    android:id="@+id/follow_group"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:visibility="invisible"
                    app:constraint_referenced_ids="user_followers_label_textview,user_followers_number_textview,follow_divider,user_following_label_textview,user_following_number_textview,sectionFollowers,sectionFollowing" />

                <TextView
                        style="@style/ProfileFollowerTextLabel"
                        android:id="@+id/user_followers_label_textview"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        app:layout_constraintTop_toTopOf="parent"
                        app:layout_constraintEnd_toStartOf="@+id/user_following_label_textview"/>
                <TextView
                        style="@style/ProfileFollowerText"
                        android:id="@+id/user_followers_number_textview"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        app:layout_constraintTop_toBottomOf="@+id/user_followers_label_textview"
                        app:layout_constraintStart_toStartOf="@+id/user_followers_label_textview"
                        app:layout_constraintEnd_toEndOf="@+id/user_followers_label_textview"/>

                <View
                        android:id="@+id/sectionFollowers"
                        android:layout_width="0dp"
                        android:layout_height="@dimen/profile_vertical_divider_height"
                        android:layout_marginTop="@dimen/padding_margin_large_28"
                        android:background="?selectableItemBackground"
                        android:visibility="gone"
                        app:layout_constraintTop_toTopOf="@+id/user_followers_label_textview"
                        app:layout_constraintStart_toStartOf="@+id/user_followers_label_textview"
                        app:layout_constraintEnd_toStartOf="@id/user_following_label_textview"
                        app:layout_constraintBottom_toBottomOf="@+id/user_followers_number_textview"/>

                <include layout="@layout/common_divider"
                         android:id="@+id/follow_divider"
                         android:layout_width="1dp"
                         android:layout_height="@dimen/profile_vertical_divider_height"
                         android:layout_marginTop="@dimen/padding_margin_large_28"
                         app:layout_constraintTop_toTopOf="@+id/user_followers_label_textview"
                         app:layout_constraintBottom_toBottomOf="@+id/user_followers_number_textview"
                         app:layout_constraintStart_toEndOf="@+id/user_followers_label_textview"
                         app:layout_constraintEnd_toStartOf="@+id/user_following_label_textview"
                         app:layout_constraintHorizontal_bias="1.0"/>

                <TextView
                        style="@style/ProfileFollowingTextLabel"
                        android:id="@+id/user_following_label_textview"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        app:layout_constraintTop_toTopOf="@+id/user_followers_label_textview"
                        app:layout_constraintBottom_toBottomOf="@+id/user_followers_label_textview"
                        app:layout_constraintEnd_toEndOf="parent"/>

                <TextView
                        style="@style/ProfileFollowingText"
                        android:id="@+id/user_following_number_textview"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        app:layout_constraintTop_toBottomOf="@+id/user_following_label_textview"
                        app:layout_constraintStart_toStartOf="@+id/user_following_label_textview"
                        app:layout_constraintEnd_toEndOf="@+id/user_following_label_textview"/>

                <View
                        android:id="@+id/sectionFollowing"
                        android:layout_width="0dp"
                        android:layout_height="@dimen/profile_vertical_divider_height"
                        android:layout_marginTop="@dimen/padding_margin_large_28"
                        android:background="?selectableItemBackground"
                        android:visibility="gone"
                        app:layout_constraintTop_toTopOf="@+id/user_followers_label_textview"
                        app:layout_constraintStart_toStartOf="@+id/user_following_label_textview"
                        app:layout_constraintEnd_toEndOf="@id/user_following_label_textview"
                        app:layout_constraintBottom_toBottomOf="@+id/user_following_number_textview"/>

                <ViewStub
                        style="@style/ProfileAction"
                        android:id="@+id/profileaction_viewstub"
                        android:inflatedId="@+id/profileaction_viewstub"
                        android:layout_width="@dimen/profile_action_width"
                        android:layout_height="wrap_content"
                        app:layout_constraintTop_toBottomOf="@+id/user_following_number_textview"
                        app:layout_constraintStart_toStartOf="@+id/user_followers_label_textview"/>

                <TextView
                        style="@style/ProfileName"
                        android:id="@+id/user_fullname_textview"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        tools:text="@string/placeholder"
                        android:drawablePadding="@dimen/padding_margin_small_4"
                        app:layout_constraintTop_toBottomOf="@+id/userPicture"
                        app:layout_constraintBottom_toTopOf="@+id/donation_list_label_textview"
                        app:layout_constraintVertical_bias="0.0"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintHorizontal_bias="0.0"/>

                <TextView
                        android:id="@+id/userTitleTextView"
                        style="@style/ProfileTitle"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:visibility="gone"
                        app:layout_constraintStart_toStartOf="@+id/user_fullname_textview"
                        app:layout_constraintTop_toBottomOf="@+id/user_fullname_textview" />

                <androidx.emoji.widget.EmojiAppCompatTextView
                        style="@style/ProfileDesc"
                        android:id="@+id/user_description_textview"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        tools:text="@string/placeholderLong"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/userTitleTextView"/>

                <TextView
                        android:id="@+id/userWebSiteTextView"
                        style="@style/ProfileWebSite"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:autoLink="web"
                        android:visibility="invisible"
                        app:layout_constraintStart_toStartOf="@+id/user_fullname_textview"
                        app:layout_constraintTop_toBottomOf="@+id/user_description_textview" />


                <androidx.constraintlayout.widget.Group
                        android:id="@+id/donating_group"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:visibility="gone"
                        app:constraint_referenced_ids="donation_list_label_textview,donating_arrow_imageview,donationList,donationDivider" />

                <include
                        android:id="@+id/donationDivider"
                        layout="@layout/common_divider"
                        android:layout_width="match_parent"
                        android:layout_height="1dp"
                        android:layout_marginStart="@dimen/padding_margin_medium_16"
                        android:layout_marginTop="@dimen/padding_margin_medium_16"
                        android:layout_marginEnd="@dimen/padding_margin_medium_16"
                        android:layout_marginBottom="@dimen/padding_margin_medium_16"
                        app:layout_constraintBottom_toTopOf="@+id/donation_list_label_textview"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toBottomOf="@+id/userWebSiteTextView" />

                <TextView
                    android:id="@+id/donation_list_label_textview"
                    style="@style/ProfileDonatingLabel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/profile_donating"
                    app:layout_constraintStart_toStartOf="@+id/user_fullname_textview"
                    app:layout_constraintTop_toBottomOf="@+id/donationDivider" />

                <ImageView
                    android:id="@+id/donating_arrow_imageview"
                    android:layout_width="@dimen/profile_arrow_size"
                    android:layout_height="@dimen/profile_arrow_size"
                    app:srcCompat="@drawable/ic_chevron_accent_right"
                    android:tint="?iconColorSelected"
                    app:layout_constraintBottom_toBottomOf="@+id/donation_list_label_textview"
                    app:layout_constraintStart_toEndOf="@+id/donation_list_label_textview"
                    app:layout_constraintTop_toTopOf="@+id/donation_list_label_textview"
                    app:layout_constraintVertical_bias="0.75" />

                <TextView
                    android:id="@+id/donationList"
                    style="@style/TextValue"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="start"
                    android:paddingTop="@dimen/padding_margin_small_4"
                    android:paddingBottom="@dimen/padding_margin_large_30"
                    app:layout_constraintStart_toStartOf="@+id/user_fullname_textview"
                    app:layout_constraintTop_toBottomOf="@+id/donation_list_label_textview" />

            </androidx.constraintlayout.widget.ConstraintLayout>

            <include layout="@layout/common_divider"
                     android:id="@+id/postsDivider"
                     android:layout_width="match_parent"
                     android:layout_height="2dp"
                     android:layout_gravity="bottom"
                     app:layout_scrollFlags="scroll|exitUntilCollapsed"
                     android:layout_marginStart="@dimen/padding_margin_medium_16"
                     android:layout_marginEnd="@dimen/padding_margin_medium_16"
                     android:layout_marginBottom="@dimen/padding_margin_medium_18"/>

                <include layout="@layout/common_toolbar_back"
                        android:id="@+id/profileToolbar"/>

        </com.google.android.material.appbar.CollapsingToolbarLayout>
    </com.google.android.material.appbar.AppBarLayout>

    <FrameLayout
        android:id="@+id/tabContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    <TextView
        android:id="@+id/private_profile_textview"
        style="@style/TextValue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|bottom"
        android:layout_marginBottom="@dimen/profile_private_label_bottom_margin"
        android:text="@string/profile_private"
        android:visibility="gone" />

    <androidx.core.widget.ContentLoadingProgressBar
        android:id="@+id/postsLoadingProgressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:theme="?android:attr/progressBarStyleLarge"
        android:visibility="gone" />

    <include layout="@layout/loader"
             android:id="@+id/profileLoader"
             android:visibility="gone"
             android:layout_width="match_parent"
             android:layout_height="match_parent"/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

raj*_*dia 0

您要做的第一件事是检查您正在使用的字体的颜色。第二个是您在片段 xml 根标记中放置 color="white" 后使用的主题,并且 clickable 为 true。