From 3739446b9d1ab64aa0d19d735a7dd84970f6d797 Mon Sep 17 00:00:00 2001 From: youchi Date: Wed, 30 Sep 2026 14:35:27 +0200 Subject: [PATCH] fix(android): don't tint the whole pager when it takes keyboard focus After a hardware key takes the window out of touch mode, a TextInput that blurs hands focus to ViewPager2's internal RecyclerView. It has no focused-state drawable, so Android 8+ draws its default focus highlight over every page. Disable that highlight; the RecyclerView stays focusable and page children keep their own highlight. --- .../java/com/reactnativepagerview/PagerViewViewManager.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/android/src/main/java/com/reactnativepagerview/PagerViewViewManager.kt b/android/src/main/java/com/reactnativepagerview/PagerViewViewManager.kt index 7089af09..31937a26 100644 --- a/android/src/main/java/com/reactnativepagerview/PagerViewViewManager.kt +++ b/android/src/main/java/com/reactnativepagerview/PagerViewViewManager.kt @@ -1,5 +1,6 @@ package com.reactnativepagerview +import android.os.Build import android.view.View import android.view.ViewGroup import androidx.viewpager2.widget.ViewPager2 @@ -50,6 +51,12 @@ class PagerViewViewManager : ViewGroupManager(), RNCViewPa vp.adapter = ViewPagerAdapter() //https://github.com/callstack/react-native-viewpager/issues/183 vp.isSaveEnabled = false + // After a hardware key leaves touch mode, a blurred input hands focus to + // this full-page RecyclerView, and Android's default focus highlight then + // tints every page. Page children keep their own focus highlight. + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + vp.getChildAt(0).defaultFocusHighlightEnabled = false + } vp.post { vp.registerOnPageChangeCallback(object : OnPageChangeCallback() {