简体   繁体   中英

ViewPager2 fragment content is disappear when focus on EditText

when i focus on EditText by click in that, the content of viewpager2 is disappear an when i start typing content is reappear and also when rotate my phone content reappear you can see issue in video here

this is my class for create tablayout and 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)}

this is my 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
    )
}}

this is my layout

<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>

and finaly this is my fragment layout

<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>

I found bug in my fragment layout i am using a ConstraintLayout into another without any reason so after removing that, bug fixed.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM