关注 EditText 时 ViewPager2 片段内容消失

ViewPager2 fragment content is disappear when focus on EditText

当我通过单击专注于 EditText 时,viewpager2 的内容消失,当我开始键入内容时重新出现,并且当旋转时我的 phone 内容重新出现 你可以在视频中看到问题 here

这是我的 class 用于创建 tablayout 和 viewpager2

class ATab (activity: AppCompatActivity,viewPagerId: Int,tabLayoutId: Int) {
val items = arrayListOf<ItemModel>()
val adapter = Adapter(items , activity)
val viewpager = activity.findViewById<ViewPager2>(viewPagerId)
val tabLayout = activity.findViewById<TabLayout>(tabLayoutId)

fun add(fragment : Fragment ,title : String ="" ,icon : String = ""){
    items.add(ItemModel(fragment,title,icon))
    adapter.notifyDataSetChanged()
}
init {
    viewpager.adapter = adapter
    TabLayoutMediator(tabLayout,viewpager){tab, position ->
        if (!items[position].title.equals("")){
            tab.text = items[position].title
        }
        if (!items[position].icon.equals("")){
            val res_id = activity.resources.getIdentifier(items[position].icon,"drawable",activity.packageName)
            tab.icon = activity.getDrawable(res_id)
        }

    }.attach()
}

inner class Adapter(val model : List<ItemModel>, context: AppCompatActivity) : FragmentStateAdapter(context){
    override fun getItemCount(): Int {
        return  model.count()
    }

    override fun createFragment(position: Int): Fragment = model[position].fragment
}

inner class ItemModel(var fragment : Fragment ,var title : String ,var icon : String)}

这是我的activity

class LoginActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    setTheme(R.style.AppTheme2)
    super.onCreate(savedInstanceState)
    overridePendingTransition(
        R.anim.fade_in,
        R.anim.fade_out
    )
    requestWindowFeature(Window.FEATURE_NO_TITLE)
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
    setContentView(R.layout.activity_login)

    val atab = ATab(this,R.id.View_splash,R.id.Tab_splash)
    atab.add(SignInFragment(),"ورود")
    atab.add(SignUpFragment(),"ثبت نام")
}

override fun onResume() {
    super.onResume()
    overridePendingTransition(
        R.anim.fade_in,
        R.anim.fade_out
    )
}}

这是我的布局

<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/splash_bachground_gradiant"
tools:context=".Activities.LoginActivity">


<LinearLayout
    android:id="@+id/cons_login"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:background="@drawable/splash_logo_background"
    android:orientation="vertical"
    android:padding="16dp"
    app:layout_constraintBottom_toTopOf="@+id/guideline5"
    app:layout_constraintEnd_toStartOf="@+id/guideline4"
    app:layout_constraintStart_toStartOf="@+id/guideline3"
    app:layout_constraintTop_toTopOf="@+id/guideline2">


    <com.google.android.material.tabs.TabLayout
        android:id="@+id/Tab_splash"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toTopOf="@+id/View_splash"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/View_splash"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:minHeight="500px"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/Tab_splash">

    </androidx.viewpager2.widget.ViewPager2>


</LinearLayout>

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.11" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.89" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.18" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintGuide_percent="0.82" /></androidx.constraintlayout.widget.ConstraintLayout>

最后这是我的片段布局

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/f2"
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">

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/cons_login"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:background="?attr/colorWhite"
    android:padding="16dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="1.0">


    <EditText
        android:id="@+id/edt_sign_up_username"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_marginTop="8dp"
        android:background="@drawable/splash_edt_background"
        android:ems="10"
        android:hint="نام کاربری"
        android:inputType="textPersonName"
        android:padding="8dp"
        android:textColor="?attr/colorBlack"
        android:textColorHighlight="?attr/colorPrimaryDark"
        android:textColorHint="?attr/colorHint"
        android:textColorLink="?attr/colorPrimary"
        android:textCursorDrawable="?attr/colorPrimary"
        app:layout_constraintBottom_toTopOf="@+id/edt_sign_up_fullname"
        app:layout_constraintEnd_toEndOf="@+id/edt_sign_up_fullname"
        app:layout_constraintStart_toStartOf="@+id/edt_sign_up_fullname"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/edt_sign_up_fullname"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_marginTop="8dp"
        android:background="@drawable/splash_edt_background"
        android:ems="10"
        android:hint="نام و نام خانوادگی"
        android:inputType="textPersonName"
        android:padding="8dp"
        android:textColor="?attr/colorBlack"
        android:textColorHighlight="?attr/colorPrimaryDark"
        android:textColorHint="?attr/colorHint"
        android:textColorLink="?attr/colorPrimary"
        android:textCursorDrawable="?attr/colorPrimary"
        app:layout_constraintBottom_toTopOf="@+id/edt_sign_up_email"
        app:layout_constraintEnd_toEndOf="@+id/edt_sign_up_email"
        app:layout_constraintStart_toStartOf="@+id/edt_sign_up_email"
        app:layout_constraintTop_toBottomOf="@+id/edt_sign_up_username" />

    <EditText
        android:id="@+id/edt_sign_up_email"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_marginTop="8dp"
        android:background="@drawable/splash_edt_background"
        android:ems="10"
        android:hint="پست الکترونیک"
        android:inputType="textEmailAddress"
        android:padding="8dp"
        android:textColor="?attr/colorBlack"
        android:textColorHighlight="?attr/colorPrimaryDark"
        android:textColorHint="?attr/colorHint"
        android:textColorLink="?attr/colorPrimary"
        android:textCursorDrawable="?attr/colorPrimary"
        app:layout_constraintBottom_toTopOf="@+id/edt_sign_up_password"
        app:layout_constraintEnd_toEndOf="@+id/edt_sign_up_password"
        app:layout_constraintStart_toStartOf="@+id/edt_sign_up_password"
        app:layout_constraintTop_toBottomOf="@+id/edt_sign_up_fullname" />

    <EditText
        android:id="@+id/edt_sign_up_password"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_marginTop="8dp"
        android:background="@drawable/splash_edt_background"
        android:ems="10"
        android:gravity="right"
        android:hint="رمز عبور"
        android:inputType="textPassword"
        android:padding="8dp"
        android:textColor="?attr/colorBlack"
        android:textColorHighlight="?attr/colorPrimaryDark"
        android:textColorHint="?attr/colorHint"
        android:textColorLink="?attr/colorPrimary"
        android:textCursorDrawable="?attr/colorPrimary"
        app:layout_constraintBottom_toTopOf="@+id/edt_sign_up_password_repeat"
        app:layout_constraintEnd_toEndOf="@+id/edt_sign_up_password_repeat"
        app:layout_constraintStart_toStartOf="@+id/edt_sign_up_password_repeat"
        app:layout_constraintTop_toBottomOf="@+id/edt_sign_up_email" />

    <EditText
        android:id="@+id/edt_sign_up_password_repeat"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_marginTop="8dp"
        android:background="@drawable/splash_edt_background"
        android:ems="10"
        android:gravity="right"
        android:hint="تکرار رمز عبور"
        android:inputType="textPassword"
        android:padding="8dp"
        android:textColor="?attr/colorBlack"
        android:textColorHighlight="?attr/colorPrimaryDark"
        android:textColorHint="?attr/colorHint"
        android:textColorLink="?attr/colorPrimary"
        android:textCursorDrawable="?attr/colorPrimary"
        app:layout_constraintBottom_toTopOf="@+id/btn_sign_up_ok"
        app:layout_constraintEnd_toEndOf="@+id/btn_sign_up_ok"
        app:layout_constraintStart_toStartOf="@+id/btn_sign_up_ok"
        app:layout_constraintTop_toBottomOf="@+id/edt_sign_up_password" />

    <Button
        android:id="@+id/btn_sign_up_ok"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_marginTop="8dp"
        android:background="@drawable/btn_style"
        android:padding="8dp"
        android:text="ثبت نام"
        android:textColor="?attr/colorTextrev"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/edt_sign_up_password_repeat" />

    <ProgressBar
        android:id="@+id/prg_login"
        style="?android:attr/progressBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:progressDrawable="@drawable/splash_bachground_gradiant"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="@+id/btn_sign_up_ok"
        app:layout_constraintEnd_toEndOf="@+id/btn_sign_up_ok"
        app:layout_constraintStart_toStartOf="@+id/btn_sign_up_ok"
        app:layout_constraintTop_toTopOf="@+id/btn_sign_up_ok" />

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

我发现了错误 在我的片段布局中,我无缘无故地将 ConstraintLayout 用于另一个布局 所以在删除它之后,bug 修复了。