Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ScrollView Layout does not fill the whole screen

I got an Activity with two Fragments (one list one normal). And the normal Fragment inflates a Scrollview containing a LineaLayout (vertical) and this layout contains TextViews. The ScrollView and layout_width and layout_height are match_parent, so I think the whole screen should be used. But on the bottom there is still a "gap". I hope you can help me.

ScrollView.xml

<ScrollView     xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools" android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="match_parent">  <LinearLayout     android:id="@+id/LinearLayout1"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:background="@color/titlescreen_bg"     android:orientation="vertical"     android:paddingTop="60dp"     tools:context=".MainActivity" >      <TextView         android:id="@+id/tv_headline"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:gravity="center"         android:paddingBottom="60dp"         android:paddingTop="60dp"         android:textIsSelectable="false"         android:textSize="@dimen/fontsize_slogan_titlescreen" />      <TextView         android:id="@+id/tv_content"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:gravity="center"         android:paddingBottom="30dp"         android:paddingTop="30dp"         android:textIsSelectable="false"         android:textSize="@dimen/fontsize_slogan_titlescreen" /> </LinearLayout>  </ScrollView> 

the fragment inflating this layout.

package wak.iage.layout;  import wak.iage.R; import android.app.Fragment; import android.graphics.Color; import android.graphics.Typeface; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.TextView;  public class MenuContentFragment extends Fragment { LinearLayout.LayoutParams   relativeParams  = new LinearLayout.LayoutParams(                                                     LayoutParams.MATCH_PARENT,                                                     LayoutParams.MATCH_PARENT); LinearLayout                topLayout       = null; TextView                    body            = null; TextView                    head            = null;  @Override public void onActivityCreated(Bundle savedInstanceState) {     super.onActivityCreated(savedInstanceState); }  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,         Bundle savedInstanceState) {     View v = inflater.inflate(R.layout.menu_content_main, container);     return v; }  public void changeText(String title, String content) {     topLayout = (LinearLayout) getActivity().findViewById(             R.id.LinearLayout1);     head = (TextView) getActivity().findViewById(R.id.tv_headline);     body = (TextView) getActivity().findViewById(R.id.tv_content);      if (body == null) {         topLayout.removeViews(1, topLayout.getChildCount() - 1);         body = new TextView(getActivity().getApplicationContext());         body.setPadding(0, 30, 0, 20);         body.setTextColor(Color.BLACK);         body.setTextSize(22);         body.setGravity(Gravity.CENTER_HORIZONTAL);         topLayout.addView(body, relativeParams);     }      body.setText(content);     head.setText(title); }  public void addGlossary() {     if (body != null) {         topLayout.removeView(body);     }      int i = 0;      for (int id : GLOSSARY) {         TextView glossary = new TextView(getActivity()                 .getApplicationContext());         glossary.setText(getString(id));         glossary.setTextColor(Color.BLACK);         if (i % 2 == 0) {             glossary.setTypeface(Typeface.DEFAULT_BOLD);             glossary.setTextSize(22);             glossary.setPadding(0, 10, 0, 10);         }         topLayout.addView(glossary, relativeParams);         i += 1;     } }  public static final int[]   GLOSSARY    = {         R.string.GlossaryAndroidOSTitle, R.string.GlossaryAndroidOSContent,         R.string.GlossaryAppTitle, R.string.GlossaryAppContent,         R.string.GlossaryCloudTitle, R.string.GlossaryCloudContent,         R.string.GlossaryDonwloadTitle, R.string.GlossaryDonwloadContent,         R.string.GlossaryFacebookTitle, R.string.GlossaryFacebookContent,         R.string.GlossaryGPSTitle, R.string.GlossaryGPSContent,         R.string.GlossaryHomescreenTitle,         R.string.GlossaryHomescreenContent, R.string.GlossaryPasswordTitle,         R.string.GlossaryPasswordContent, R.string.GlossaryRouterTitle,         R.string.GlossaryRouterContent, R.string.GlossarySDTitle,         R.string.GlossaySDContent, R.string.GlossayStandbyTitle,         R.string.GlossayStandbyContent, R.string.GlossaryTabletTitle,         R.string.GlossaryTabletContent, R.string.GlossaryTouchscreenTitle,         R.string.GlossaryTouchscreenContent, R.string.GlossayWidgetsTitle,         R.string.GlossayWidgetsContent, R.string.GlossayWLANTitle,         R.string.GlossayWLANContent }; } 

Thanks a lot.

Edit: Even the proble is already fixed with: android:fillViewPort="true", I want to show you the problem.

But I don't have enough reputation to post a picture. Sorry!

like image 686
j0chn Avatar asked Feb 26 '13 17:02

j0chn


People also ask

What is the difference between ScrollView and horizontal ScrollView?

ScrollView and HorizontalScrollView has same attributes, the only difference is scrollView scroll the child items in vertical direction while horizontal scroll view scroll the child items in horizontal direction.

What is the difference between ScrollView and ListView?

ScrollView is used to put different or same child views or layouts and the all can be scrolled. ListView is used to put same child view or layout as multiple items. All these items are also scrollable. Simply ScrollView is for both homogeneous and heterogeneous collection.


1 Answers

If i'm not mistaken, the ViewGroup's height (LinearLayout's height in your case), that is the (only) child inside a ScrollView, is always interpreted as wrap_content, since that content can be larger than the ScrollView's height (hence the scrollbars).

This also means that if the content is smaller, the ScrollView's content (child) may not necessarily stretch to fill the screen.

In order to visually help you fix this, we need to see a screenshot of your problem.

Maybe setting android:fillViewport="true" on the ScrollView will fix your issue:

<ScrollView     xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:id="@+id/scrollView1"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:fillViewport="true"> 
like image 169
Streets Of Boston Avatar answered Oct 14 '22 05:10

Streets Of Boston