Android scrolling scheme

I am trying to make my activity screen where there is a form for filling scrollable, but unfortunately when I tried, it crashed the application. I have the following xml for this action:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/background" android:paddingBottom="16dp" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="16dp" android:textDirection="anyRtl" tools:context=".AddDiscountActivity" > <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/textView3" android:layout_below="@+id/textView3" android:layout_marginTop="19dp" android:text="@string/discountLocationLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <EditText android:id="@+id/shopLocation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView4" android:layout_alignBottom="@+id/textView4" android:layout_alignRight="@+id/shopCity" android:ems="10" android:inputType="text" /> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/textView5" android:layout_below="@+id/shopDiscount" android:layout_marginTop="21dp" android:text="@string/discountDurationLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <EditText android:id="@+id/shopDiscountDuration" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/textView6" android:layout_alignLeft="@+id/shopDiscount" android:ems="10" android:inputType="text" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/shopDiscount" android:layout_alignParentRight="true" android:text="@string/discountRateLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView6" android:layout_centerHorizontal="true" android:layout_marginTop="18dp" android:background="@drawable/roundbutton" android:text="@string/discountPublishButtonLabel" android:textColor="@color/white" android:onClick="SubmitData" android:width="250dp" /> <EditText android:id="@+id/shopCity" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView4" android:layout_alignRight="@+id/shopName" android:ems="10" android:inputType="text" > </EditText> <EditText android:id="@+id/shopDiscount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/shopLocation" android:layout_below="@+id/shopLocation" android:layout_marginTop="14dp" android:ems="10" android:inputType="number" /> <EditText android:id="@+id/shopName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView2" android:layout_alignBottom="@+id/textView2" android:layout_alignParentLeft="true" android:layout_marginLeft="14dp" android:ems="10" android:inputType="text"> <requestFocus /> </EditText> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/categoriesSpinner" android:layout_alignRight="@+id/textView2" android:text="@string/discountCategoryLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <Spinner android:id="@+id/categoriesSpinner" android:layout_width="160dp" android:layout_height="wrap_content" android:layout_above="@+id/shopName" android:layout_alignLeft="@+id/button1" android:layout_marginBottom="16dp" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignRight="@+id/textView2" android:layout_marginTop="206dp" android:text="@string/discountCityLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/shopCity" android:layout_alignLeft="@+id/textView5" android:layout_marginBottom="18dp" android:text="@string/discountShopLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <TextView android:id="@+id/textView7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignRight="@+id/textView1" android:layout_marginTop="14dp" android:gravity="right" android:text="@string/addDiscountMsg" android:textAlignment="viewEnd" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textDirection="anyRtl" /> </RelativeLayout> 

And when I tried to add the following after defining RelativeLayout and before closing RelativeLayout, it immediately broke the application when I started it.

  <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" > ........... </ScrollView> 

How can I make it scrollable?

+4
source share
3 answers

Your application crashes due to the fact that ScrollView can contain only one direct child element. Directly from the official documentation:

A layout container for a view hierarchy that can be scrolled by the user, allowing him to be larger than the physical display. ScrollView is a FrameLayout, which means that you must put one child in it, containing all the contents for scrolling; this child himself can be a mock manager with a complex hierarchy of objects. A child who often uses LinearLayout in a vertical orientation, presenting a vertical array of top-level elements that the user can scroll.

Take a look at http://developer.android.com/reference/android/widget/ScrollView.html .

To solve your xml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/background" android:paddingBottom="16dp" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="16dp" android:textDirection="anyRtl" tools:context=".AddDiscountActivity" > <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/textView3" android:layout_below="@+id/textView3" android:layout_marginTop="19dp" android:text="@string/discountLocationLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <EditText android:id="@+id/shopLocation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView4" android:layout_alignBottom="@+id/textView4" android:layout_alignRight="@+id/shopCity" android:ems="10" android:inputType="text" /> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/textView5" android:layout_below="@+id/shopDiscount" android:layout_marginTop="21dp" android:text="@string/discountDurationLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <EditText android:id="@+id/shopDiscountDuration" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/textView6" android:layout_alignLeft="@+id/shopDiscount" android:ems="10" android:inputType="text" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/shopDiscount" android:layout_alignParentRight="true" android:text="@string/discountRateLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView6" android:layout_centerHorizontal="true" android:layout_marginTop="18dp" android:background="@drawable/roundbutton" android:text="@string/discountPublishButtonLabel" android:textColor="@color/white" android:onClick="SubmitData" android:width="250dp" /> <EditText android:id="@+id/shopCity" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView4" android:layout_alignRight="@+id/shopName" android:ems="10" android:inputType="text" /> <EditText android:id="@+id/shopDiscount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/shopLocation" android:layout_below="@+id/shopLocation" android:layout_marginTop="14dp" android:ems="10" android:inputType="number" /> <EditText android:id="@+id/shopName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView2" android:layout_alignBottom="@+id/textView2" android:layout_alignParentLeft="true" android:layout_marginLeft="14dp" android:ems="10" android:inputType="text"> <requestFocus /> </EditText> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/categoriesSpinner" android:layout_alignRight="@+id/textView2" android:text="@string/discountCategoryLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <Spinner android:id="@+id/categoriesSpinner" android:layout_width="160dp" android:layout_height="wrap_content" android:layout_above="@+id/shopName" android:layout_alignLeft="@+id/button1" android:layout_marginBottom="16dp" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignRight="@+id/textView2" android:layout_marginTop="206dp" android:text="@string/discountCityLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/shopCity" android:layout_alignLeft="@+id/textView5" android:layout_marginBottom="18dp" android:text="@string/discountShopLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <TextView android:id="@+id/textView7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignRight="@+id/textView1" android:layout_marginTop="14dp" android:gravity="right" android:text="@string/addDiscountMsg" android:textAlignment="viewEnd" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textDirection="anyRtl" /> </LinearLayout> </ScrollView> </RelativeLayout> 
+11
source

Do it like this, it will work:

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/background" android:paddingBottom="16dp" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="16dp" android:textDirection="anyRtl" tools:context=".AddDiscountActivity" > <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/textView3" android:layout_below="@+id/textView3" android:layout_marginTop="19dp" android:text="@string/discountLocationLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <EditText android:id="@+id/shopLocation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView4" android:layout_alignBottom="@+id/textView4" android:layout_alignRight="@+id/shopCity" android:ems="10" android:inputType="text" /> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/textView5" android:layout_below="@+id/shopDiscount" android:layout_marginTop="21dp" android:text="@string/discountDurationLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <EditText android:id="@+id/shopDiscountDuration" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/textView6" android:layout_alignLeft="@+id/shopDiscount" android:ems="10" android:inputType="text" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/shopDiscount" android:layout_alignParentRight="true" android:text="@string/discountRateLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView6" android:layout_centerHorizontal="true" android:layout_marginTop="18dp" android:background="@drawable/roundbutton" android:text="@string/discountPublishButtonLabel" android:textColor="@color/white" android:onClick="SubmitData" android:width="250dp" /> <EditText android:id="@+id/shopCity" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView4" android:layout_alignRight="@+id/shopName" android:ems="10" android:inputType="text" > </EditText> <EditText android:id="@+id/shopDiscount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/shopLocation" android:layout_below="@+id/shopLocation" android:layout_marginTop="14dp" android:ems="10" android:inputType="number" /> <EditText android:id="@+id/shopName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView2" android:layout_alignBottom="@+id/textView2" android:layout_alignParentLeft="true" android:layout_marginLeft="14dp" android:ems="10" android:inputType="text"> <requestFocus /> </EditText> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/categoriesSpinner" android:layout_alignRight="@+id/textView2" android:text="@string/discountCategoryLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <Spinner android:id="@+id/categoriesSpinner" android:layout_width="160dp" android:layout_height="wrap_content" android:layout_above="@+id/shopName" android:layout_alignLeft="@+id/button1" android:layout_marginBottom="16dp" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignRight="@+id/textView2" android:layout_marginTop="206dp" android:text="@string/discountCityLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/shopCity" android:layout_alignLeft="@+id/textView5" android:layout_marginBottom="18dp" android:text="@string/discountShopLabel" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textStyle="bold" /> <TextView android:id="@+id/textView7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignRight="@+id/textView1" android:layout_marginTop="14dp" android:gravity="right" android:text="@string/addDiscountMsg" android:textAlignment="viewEnd" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/white" android:textDirection="anyRtl" /> </RelativeLayout> </ScrollView> 

Hope to help you.

+7
source

I think you should wrap your relative layout in your scrollview (before defining and after closing).

EDIT: you should also wrap your relative layout in a liner layout

ex:

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/scroll" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:stackFromBottom="true" android:transcriptMode="alwaysScroll" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/background" android:paddingBottom="16dp" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="16dp" android:textDirection="anyRtl" tools:context=".AddDiscountActivity" > </RelativeLayout> </LinearLayout> </SrcollView> 
+2
source

Source: https://habr.com/ru/post/1492747/


All Articles