0

我在 ScrollView 中有 3 个 ViewStub,并且没有显示任何内容。

这是片段 XML:

<?xml version="1.0" encoding="utf-8"?>
<layout
    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" >

    <data>
        <variable
            name="viewModel"
            type="com.smellydogcoding.westvirginiaelectronicfieldguide.ui.FirebaseViewModel" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/user_profile"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="16dp"
            android:fontFamily="@font/roboto_bold"
            android:text="@{`User Profile for ` + viewModel.firstname + ` ` + viewModel.lastname}"
            android:textColor="@color/accordionTitleBorder"
            android:textSize="16sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            tools:text="User Profile for {firstname}" />

        <ScrollView
            android:id="@+id/profileScrollView"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="8dp"
            android:fillViewport="true"
            android:paddingBottom="48dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/user_profile">

            <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <ViewStub
                    android:id="@+id/stub_basic_info_card"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="parent"
                    app:viewModel="@{viewModel}" />

                <ViewStub
                    android:id="@+id/stub_account_info_card"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="parent"
                    app:viewModel="@{viewModel}" />

                <ViewStub
                    android:id="@+id/stub_access_level_card"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="parent"
                    app:viewModel="@{viewModel}" />

            </androidx.constraintlayout.widget.ConstraintLayout>
        </ScrollView>
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

这是 ViewStub 之一(其他 2 个的结构相同):

<?xml version="1.0" encoding="utf-8"?>
<layout 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">

    <data>
        <variable
            name="viewModel"
            type="com.smellydogcoding.westvirginiaelectronicfieldguide.ui.FirebaseViewModel" />
    </data>

    <com.google.android.material.card.MaterialCardView
        android:id="@+id/account_info_card"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        app:cardCornerRadius="10dp"
        app:cardElevation="5dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="parent">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView
                android:id="@+id/account_info_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/secondaryColor"
                android:fontFamily="@font/roboto_bold"
                android:paddingHorizontal="16dp"
                android:paddingVertical="16dp"
                android:text="@string/account_info"
                android:textAppearance="?attr/textAppearanceHeadline6"
                android:textSize="16sp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <TextView
                android:id="@+id/username_label"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="16dp"
                android:layout_marginTop="16dp"
                android:text="@string/username_alt"
                android:textSize="16sp"
                android:textStyle="bold"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/account_info_title" />

            <TextView
                android:id="@+id/username_value"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:layout_marginEnd="16dp"
                android:text="@{viewModel.email}"
                android:textSize="16sp"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@+id/guideline2"
                app:layout_constraintTop_toBottomOf="@id/account_info_title"
                tools:text="Email" />

            <androidx.constraintlayout.widget.Guideline
                android:id="@+id/guideline2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="156dp"
                android:orientation="vertical"
                app:layout_constraintGuide_begin="156dp"
                app:layout_constraintStart_toStartOf="parent" />

            <com.google.android.material.button.MaterialButton
                android:id="@+id/change_username_button"
                style="?attr/borderlessButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginTop="16dp"
                android:text="@string/change_username"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@id/username_label" />

            <com.google.android.material.button.MaterialButton
                android:id="@+id/change_password_button"
                style="?attr/borderlessButtonStyle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:layout_marginTop="16dp"
                android:text="@string/change_password"
                app:layout_constraintStart_toEndOf="@id/change_username_button"
                app:layout_constraintTop_toBottomOf="@id/username_label" />

        </androidx.constraintlayout.widget.ConstraintLayout>
    </com.google.android.material.card.MaterialCardView>
</layout>

这是片段:

package com.smellydogcoding.westvirginiaelectronicfieldguide.ui.profile

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.ViewStubProxy
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import com.smellydogcoding.westvirginiaelectronicfieldguide.R
import com.smellydogcoding.westvirginiaelectronicfieldguide.databinding.FragmentProfileBinding
import com.smellydogcoding.westvirginiaelectronicfieldguide.ui.FirebaseViewModel


class ProfileFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        val binding = FragmentProfileBinding.inflate(layoutInflater)
        val firebaseViewModel : FirebaseViewModel = ViewModelProvider(requireActivity())[FirebaseViewModel::class.java]
        binding.viewModel = firebaseViewModel
        binding.lifecycleOwner = viewLifecycleOwner

        val basicInfoViewStubProxy : ViewStubProxy = binding.stubBasicInfoCard
        val accountInfoViewStubProxy : ViewStubProxy = binding.stubAccountInfoCard
        val accessLevelViewStubProxy : ViewStubProxy = binding.stubAccessLevelCard
        basicInfoViewStubProxy.viewStub?.layoutResource = R.layout.basic_info_card
        accountInfoViewStubProxy.viewStub?.layoutResource = R.layout.account_info_card
        accessLevelViewStubProxy.viewStub?.layoutResource = R.layout.access_level_card
        basicInfoViewStubProxy.viewStub?.inflate()
        accountInfoViewStubProxy.viewStub?.inflate()
        accessLevelViewStubProxy.viewStub?.inflate()

        return binding.root
    }

}

有谁知道为什么没有一个 ViewStub 没有显示在 ScrollView 中?最糟糕的部分是我有另一个带有 ScrollView 的片段,我以完全相同的方式编码并且它可以工作。

编辑 2022 年 2 月 7 日下午 4:10(美国东部时间)

如果我删除MaterialCardView组件并将其作为 aInclude而不是 a导入,ViewStub则它可以工作。有谁知道为什么ScrollView不喜欢MaterialCardView?我真的宁愿不必重新设计视图。

4

0 回答 0