Fixed
Status Update
Comments
il...@google.com <il...@google.com> #2
Hi, thanks for reporting, we'll have a look. If you could provide us with a minimum sample app to reproduce the issue, that'd be very helpful.
my...@gmail.com <my...@gmail.com> #3
I confirm I managed to reproduce with API 23 emulator and the following patch on the sample app. Will investigate further.
Patch below.
***
Index: app/src/main/java/androidx/viewpager2/integration/testapp/cards/CardView.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- app/src/main/java/androidx/viewpager2/integration/testapp/cards/CardView.kt (revision 38ea42c142729c777dcf8f3e4bd5100aeca981ec)
+++ app/src/main/java/androidx/viewpager2/integration/testapp/cards/CardView.kt (date 1565281963000)
@@ -16,9 +16,11 @@
package androidx.viewpager2.integration.testapp.cards
+import android.text.SpannableStringBuilder
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.EditText
import android.widget.TextView
import androidx.annotation.ColorRes
@@ -28,7 +30,7 @@
/** Inflates and populates a [View] representing a [Card] */
class CardView(layoutInflater: LayoutInflater, container: ViewGroup?) {
val view: View = layoutInflater.inflate(R.layout.item_card_layout, container, false)
- private val textSuite: TextView
+ private val textSuite: EditText
private val textCorner1: TextView
private val textCorner2: TextView
@@ -42,7 +44,7 @@
* Updates the view to represent the passed in card
*/
fun bind(card: Card) {
- textSuite.text = card.suit
+ textSuite.text = SpannableStringBuilder(card.suit)
view.setBackgroundResource(getColorRes(card))
val cornerLabel = card.cornerLabel
Index: app/src/main/res/layout/item_card_layout.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- app/src/main/res/layout/item_card_layout.xml (revision 38ea42c142729c777dcf8f3e4bd5100aeca981ec)
+++ app/src/main/res/layout/item_card_layout.xml (date 1565281963000)
@@ -31,13 +31,15 @@
android:textAppearance="@android:style/TextAppearance.Large"
tools:text="A"/>
- <TextView
+ <EditText
android:id="@+id/label_center"
- android:layout_width="wrap_content"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
+ android:inputType="text"
+ android:maxLines="1"
android:textAppearance="@android:style/TextAppearance.Large"
- tools:text="♠"/>
+ tools:text="♠" />
<TextView
android:id="@+id/label_bottom"
Patch below.
***
Index: app/src/main/java/androidx/viewpager2/integration/testapp/cards/CardView.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- app/src/main/java/androidx/viewpager2/integration/testapp/cards/CardView.kt (revision 38ea42c142729c777dcf8f3e4bd5100aeca981ec)
+++ app/src/main/java/androidx/viewpager2/integration/testapp/cards/CardView.kt (date 1565281963000)
@@ -16,9 +16,11 @@
package androidx.viewpager2.integration.testapp.cards
+import android.text.SpannableStringBuilder
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.EditText
import android.widget.TextView
import androidx.annotation.ColorRes
@@ -28,7 +30,7 @@
/** Inflates and populates a [View] representing a [Card] */
class CardView(layoutInflater: LayoutInflater, container: ViewGroup?) {
val view: View = layoutInflater.inflate(R.layout.item_card_layout, container, false)
- private val textSuite: TextView
+ private val textSuite: EditText
private val textCorner1: TextView
private val textCorner2: TextView
@@ -42,7 +44,7 @@
* Updates the view to represent the passed in card
*/
fun bind(card: Card) {
- textSuite.text = card.suit
+ textSuite.text = SpannableStringBuilder(card.suit)
view.setBackgroundResource(getColorRes(card))
val cornerLabel = card.cornerLabel
Index: app/src/main/res/layout/item_card_layout.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- app/src/main/res/layout/item_card_layout.xml (revision 38ea42c142729c777dcf8f3e4bd5100aeca981ec)
+++ app/src/main/res/layout/item_card_layout.xml (date 1565281963000)
@@ -31,13 +31,15 @@
android:textAppearance="@android:style/TextAppearance.Large"
tools:text="A"/>
- <TextView
+ <EditText
android:id="@+id/label_center"
- android:layout_width="wrap_content"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
+ android:inputType="text"
+ android:maxLines="1"
android:textAppearance="@android:style/TextAppearance.Large"
- tools:text="♠"/>
+ tools:text="♠" />
<TextView
android:id="@+id/label_bottom"
jb...@google.com <jb...@google.com>
ap...@google.com <ap...@google.com> #4
Corrected video
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 47ac9fee0e3d43b4da33f53b8a2ff590f0d46079
Author: Jakub Gielzak <jgielzak@google.com>
Date: Tue Aug 20 13:57:06 2019
Addressed issues with EditText causing scroll
EditText methods: bringPointIntoView, and handleFocusGainInternal
trigger requestChildRectangleOnScreen in ViewPager2's internal
RecyclerView.
This can cause:
- unwanted scrolling -- e.g. when typing on some API versions
- a jump to page 0 -- EditText sometimes reports over -1M px mScrollX
This fix bypasses requestChildRectangleOnScreen calculations taking
advantage of the fact that PagerSnapHelper constraints valid scroll
values to a snapped position ones, and as a result, the problem is
reduced to choosing the correct currentItem.
Bug: 138044582
Bug: 139432498
Test: ./gradlew viewpager2:connectedCheck
Change-Id: Ia4d3e4e6734183e64f261c7cc76d669deae78da5
A viewpager2/src/androidTest/java/androidx/viewpager2/widget/EditTextFocusTest.kt
M viewpager2/src/main/java/androidx/viewpager2/widget/ViewPager2.java
https://android-review.googlesource.com/1107013
https://goto.google.com/android-sha1/47ac9fee0e3d43b4da33f53b8a2ff590f0d46079
Branch: androidx-master-dev
commit 47ac9fee0e3d43b4da33f53b8a2ff590f0d46079
Author: Jakub Gielzak <jgielzak@google.com>
Date: Tue Aug 20 13:57:06 2019
Addressed issues with EditText causing scroll
EditText methods: bringPointIntoView, and handleFocusGainInternal
trigger requestChildRectangleOnScreen in ViewPager2's internal
RecyclerView.
This can cause:
- unwanted scrolling -- e.g. when typing on some API versions
- a jump to page 0 -- EditText sometimes reports over -1M px mScrollX
This fix bypasses requestChildRectangleOnScreen calculations taking
advantage of the fact that PagerSnapHelper constraints valid scroll
values to a snapped position ones, and as a result, the problem is
reduced to choosing the correct currentItem.
Bug: 138044582
Bug: 139432498
Test: ./gradlew viewpager2:connectedCheck
Change-Id: Ia4d3e4e6734183e64f261c7cc76d669deae78da5
A viewpager2/src/androidTest/java/androidx/viewpager2/widget/EditTextFocusTest.kt
M viewpager2/src/main/java/androidx/viewpager2/widget/ViewPager2.java
ap...@google.com <ap...@google.com> #6
ap...@google.com <ap...@google.com> #8
Project: platform/frameworks/support
Branch: androidx-main
commit 3a770fd029c9c0c62b745c55b240b8f3f07e4b94
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed Dec 20 21:51:17 2023
Remove code path for older lint versions and reflection
When the ActivityResultFragmentVersionDetector was written there had
been recent changes in the lint API that required it to be supported in
2 incompatiable lint versions (see b/162155191 ). That was over 3 years
and 4 lint versions ago, but it required the use of some unsafe
reflection.
Enough time has passed that it is reasonable to expect that most people
using the latest version of the Activity library are also using some
more recent version of lint.
We can clean up this rule by removing the old lint path and relying
directly on lint API instead of reflection.
This also reenables some tests that were failing due to bugs in previous
lint versions.
RelNote: "The `InvalidFragmentVersionForActivityResult` lint check will
now only work on AndroidStudio versions 4.1.0+."
Test: reenabled tests
Bug: 317158163
Fixes: 293517205
Change-Id: I84933f5cd66e5f4e699ccc6663a4d25cd4138049
M activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
M activity/activity-lint/src/test/java/androidx/activity/lint/ActivityResultFragmentVersionDetectorTest.kt
https://android-review.googlesource.com/2886313
Branch: androidx-main
commit 3a770fd029c9c0c62b745c55b240b8f3f07e4b94
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed Dec 20 21:51:17 2023
Remove code path for older lint versions and reflection
When the ActivityResultFragmentVersionDetector was written there had
been recent changes in the lint API that required it to be supported in
2 incompatiable lint versions (see
and 4 lint versions ago, but it required the use of some unsafe
reflection.
Enough time has passed that it is reasonable to expect that most people
using the latest version of the Activity library are also using some
more recent version of lint.
We can clean up this rule by removing the old lint path and relying
directly on lint API instead of reflection.
This also reenables some tests that were failing due to bugs in previous
lint versions.
RelNote: "The `InvalidFragmentVersionForActivityResult` lint check will
now only work on AndroidStudio versions 4.1.0+."
Test: reenabled tests
Bug: 317158163
Fixes: 293517205
Change-Id: I84933f5cd66e5f4e699ccc6663a4d25cd4138049
M activity/activity-lint/src/main/java/androidx/activity/lint/ActivityResultFragmentVersionDetector.kt
M activity/activity-lint/src/test/java/androidx/activity/lint/ActivityResultFragmentVersionDetectorTest.kt
Description
This code snippet will no longer work with lint tools
27.1.0+
(which is what's used in AGP 4.1.0+).It looks like it should be changed to
buildVariant
, and then there are changed APIs for accessing library info (the.libraries
call at the end will also need fixing).This results in the following failure when I build with newer lint tools and AGP 4.1.0-beta05 in our project