تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ علی خدری
بنر اسلایدر
پوریا شفیعی حل شده توسط پوریا شفیعی

سلام 

چرا وقتی به یک صفحه دیگر می‌رویم و دوباره به صفحه خانه بر می‌گردیم بنراسلایدر ما بهم می‌ریزید.؟

حتی وقتی سایز ثابت هم به ارتفاع میدم باز همین مشکل وجود دارد؟

مشکل از فرسکو است؟

سلام و احترام

 

در جلسات آینده این موارد برطرف میشن 

در یکی از ویدیو‌ها استاد اشاره میکنند که در انتها ویدیویی ضبط خواهند کرد برای رفع باگ ها.

بهترین پاسخ
پوریا شفیعی ۰۳ بهمن ۱۳۹۹، ۱۶:۴۲

بسیار عالی.

فعلا ارتفاعی که استاد در فرگمنت محاسبه کردند را کامنت کردم و ارتفاع ثابت دادم مشکل رفع شد.

علی خدری ۰۳ بهمن ۱۳۹۹، ۲۲:۳۵

از constraint layout استفاده کن بجای frame layout اتربیوت app:layout_constraintDimensionRatio رو برای view pager ست کن دیگه نیازی هم به محاسبه طول و عرض نداری view به طور خودکار تو دیوایسای مختلف برا اساس ابعاد صفحه  نمایش سایزش تغییر میکنه

: view  اتریبیوت های

          <androidx.viewpager2.widget.ViewPager2
                     android:id="@+id/bannerSliderViewPager"
                     android:layout_width="0dp"
                     android:layout_height="0dp"
                     app:layout_constraintDimensionRatio="16:9"
                     app:layout_constraintEnd_toStartOf="@+id/guideline_right"
                     app:layout_constraintStart_toStartOf="@id/guideline_left"
                     app:layout_constraintTop_toBottomOf="@+id/et_search"
                     android:layout_marginTop="16dp" />
mehran akbari ۲۱ فروردین ۱۴۰۰، ۱۴:۵۵

با سلام 

 

برای برطرف شدن باگ باید دوباره ارتفاع رو محاسبه کنید.. چون موقعی که بین تب‌ها جا به جا میشید ویو از بین میره و دوباره به وجود میاد و قبل از اینکه استیبل بشه لایو دیتای banner کال میشه و نمیتونه عرض صفحه رو درست بگیره و محاسبه کنه.. کافیه در بخشی که ارتفاع رو محاسبه میکنه مانند زیر یک فانکشن کنید:

private fun calculateBannerSliderHeight() {
        //calculate the height of viewPager
        val viewPagerHeight = ((binding.bannerSliderViewPagerHome.measuredWidth
                - convertDpToPixel(32f, requireContext())) * 173) / 328
        //take layoutParams for set a new Height in viewPager.
        val layoutParams = binding.bannerSliderViewPagerHome.layoutParams
        layoutParams.height = viewPagerHeight.toInt()
        //set new layoutParams for viewPager
        binding.bannerSliderViewPagerHome.layoutParams = layoutParams
        Timber.d("${binding.bannerSliderViewPagerHome.measuredWidth} and ${layoutParams.height}")
    }

و بعد در متد OnResume اون رو کال کنید. مشکل برطرف خواهد شد.

 override fun onResume() {
        super.onResume()
        //for calculate again banner slider height
        calculateBannerSliderHeight()
    }
ابوالفضل رضایی ۳۱ خرداد ۱۴۰۰، ۱۲:۰۶