How to scroll to a specific view and focus the view with scroll view in android
As many of the developer face this problem to scroll the view to specific view to focus the child view of scroll view. Let’s see an example, we have huge form where user need to fill to submit. But in the big form if user is missing any filling field or view then it is very difficult for user to finds the field which are missing to fill. Now we need to scroll the view to this specific view and focus this view for the user, then it becomes easy for the user to understand to finding the missing information to filled.
<ScrollView android:id="@+id/scrollView2" android:layout_width="match_parent" android:layout_height="0dp" card_view:layout_constraintBottom_toBottomOf="parent" card_view:layout_constraintEnd_toEndOf="parent" card_view:layout_constraintStart_toStartOf="parent"> <LinearLayout android:id="@+id/detail_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#f1f6fb" android:orientation="vertical" tools:visibility="visible"> <com.google.android.material.textfield.TextInputLayout android:id="@+id/number_inputlayout"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/number_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" /> </com.google.android.material.textfield.TextInputLayout> .............. ............. </LinearLayout> </ScrollView>
Here is solution.
private fun scrollToView(scrollViewParent: ScrollView, view: View) { // Get deepChild Offset val childOffset = Point() getDeepChildOffset(scrollViewParent, view.parent, view, childOffset) // Scroll to child. scrollViewParent.smoothScrollTo(0, childOffset.y) } private fun getDeepChildOffset( mainParent: ViewGroup, parent: ViewParent, child: View, accumulatedOffset: Point ) { val parentGroup = parent as ViewGroup accumulatedOffset.x += child.left accumulatedOffset.y += child.top if (parentGroup == mainParent) { return } getDeepChildOffset(mainParent, parentGroup.parent, parentGroup, accumulatedOffset) }
That is. Now it becomes easy to user to identify the view which is missing to filled. RefÂ
Happy Coding.
I am a very enthusiastic Android developer to build solid Android apps. I have a keen interest in developing for Android and have published apps to the Google Play Store. I always open to learning new technologies. For any help drop us a line anytime at contact@mobologicplus.com