Reputation: 138
I've gone through numerous links but no luck. When I scroll (vertical) the form up, it hides under the top image. This is a fixed ImageView (height=200dp). The requirement is that when I scroll up the Freight Forwarding Sea form, it should scroll over the image instead below/under the image. I appreciate for prompt solution. Kind Regards Here is the xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/light_grey"
tools:context=".fragments.FFSFragment">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@drawable/sea_bg">
<ImageView
android:layout_width="match_parent"
android:layout_height="200dp"/>
</FrameLayout>
<ScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="200dp"
android:scrollbars="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/rectangle_corners_layout">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/menu_ffs"
android:textSize="25sp"
android:textColor="@android:color/black"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"/>
<TextView
android:id="@+id/text_cb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/fill_form"
android:textSize="16sp"
android:textColor="@android:color/black"
android:layout_marginLeft="20dp"
android:layout_marginBottom="30dp"/>
<EditText
android:id="@+id/et_origin"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_origin"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_destination"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_destination"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_commodity"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_commodity"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_weight"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_weight"
android:inputType="number"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_boxes"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_boxes"
android:inputType="number"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_boxe_size"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_boxsize"
android:background="@drawable/rectangle_corners"/>
<Button
android:id="@+id/choose_images_btn"
style="@style/AppTheme.RoundButtons"
android:text="@string/choose_images"/>
<Button
android:id="@+id/submit_btn"
style="@style/AppTheme.RoundButtons"
android:layout_marginBottom="20dp"
android:text="@string/submit"/>
</LinearLayout>
</ScrollView>
</RelativeLayout>
Upvotes: 0
Views: 156
Reputation: 91
Remove Relative layout, use FrameLayout instead
Another issue is you are providing 200dp paddingTop to Scrollview which stays even when you scroll the view and cause the issue
You can refer to this too!
<FrameLayout
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/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/light_grey"
tools:context=".fragments.FFSFragment">
<ImageView
android:layout_width="match_parent"
android:layout_height="200dp"
android:scaleType="fitXY"
android:src="@drawable/sea_bg" />
<ScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="200dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/rectangle_corners_layout">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/menu_ffs"
android:textSize="25sp"
android:textColor="@android:color/black"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"/>
<TextView
android:id="@+id/text_cb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/fill_form"
android:textSize="16sp"
android:textColor="@android:color/black"
android:layout_marginLeft="20dp"
android:layout_marginBottom="30dp"/>
<EditText
android:id="@+id/et_origin"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_origin"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_destination"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_destination"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_commodity"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_commodity"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_weight"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_weight"
android:inputType="number"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_boxes"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_boxes"
android:inputType="number"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_boxe_size"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_boxsize"
android:background="@drawable/rectangle_corners"/>
<Button
android:id="@+id/choose_images_btn"
style="@style/AppTheme.RoundButtons"
android:text="@string/choose_images"/>
<Button
android:id="@+id/submit_btn"
style="@style/AppTheme.RoundButtons"
android:layout_marginBottom="20dp"
android:text="@string/submit"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</FrameLayout>
I Hope this answer Helps You!
Upvotes: 0
Reputation: 645
The easiest way to do this is by using MotionLayout
:
MotionLayout
dependency in your build.gradle(app)
: implementation "androidx.constraintlayout:constraintlayout:2.1.4"
RelativeLayout
to MotionLayout
, and ScrollView
to NestedScrollView
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#DDD"
android:orientation="vertical"
app:layoutDescription="@xml/activity_main_scene">
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ic_launcher_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="200dp" />
</FrameLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:scrollbars="vertical"
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/frameLayout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/menu_ffs"
android:textSize="25sp"
android:textColor="@android:color/black"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"/>
<TextView
android:id="@+id/text_cb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/fill_form"
android:textSize="16sp"
android:textColor="@android:color/black"
android:layout_marginLeft="20dp"
android:layout_marginBottom="30dp"/>
<EditText
android:id="@+id/et_origin"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_origin"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_destination"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_destination"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_commodity"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_commodity"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_weight"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_weight"
android:inputType="number"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_boxes"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_boxes"
android:inputType="number"
android:background="@drawable/rectangle_corners"/>
<EditText
android:id="@+id/et_boxe_size"
style="@style/AppTheme.EditTexts"
android:hint="@string/enter_boxsize"
android:background="@drawable/rectangle_corners"/>
<Button
android:id="@+id/choose_images_btn"
style="@style/AppTheme.RoundButtons"
android:text="@string/choose_images"/>
<Button
android:id="@+id/submit_btn"
style="@style/AppTheme.RoundButtons"
android:layout_marginBottom="20dp"
android:text="@string/submit"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.motion.widget.MotionLayout>
app:layoutDescription="@xml/activity_main_scene"
, Android studio going to give you a red error, click at red lamp to show Context Action like in the image below and press at Create xml resource file<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:motion="http://schemas.android.com/apk/res-auto">
<Transition
motion:constraintSetEnd="@+id/end"
motion:constraintSetStart="@id/start"
motion:duration="1000">
<KeyFrameSet></KeyFrameSet>
<OnSwipe
motion:dragDirection="dragUp"
motion:touchAnchorId="@+id/scroll_view"
motion:touchAnchorSide="top" />
</Transition>
<ConstraintSet android:id="@+id/start"></ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:scrollbars="vertical"
motion:layout_constraintBottom_toBottomOf="parent"
motion:layout_constraintEnd_toEndOf="parent"
motion:layout_constraintHorizontal_bias="0.5"
motion:layout_constraintStart_toStartOf="parent"
motion:layout_constraintTop_toTopOf="@+id/frameLayout" />
</ConstraintSet>
</MotionScene>
I hope this helps, and you can read more about MotionLayout
its really helpful in this kind of situation
Upvotes: 1