ScrollView Layout does not fill the entire screen

I got an Activity with two Fragment (one list one normal). And normal Fragment inflates a Scrollview containing a LineaLayout (vertical), and this layout contains TextViews . Scrollview and layout_width and layout_height are equal match_parent , so I think the whole screen should be used. But there is still a โ€œgapโ€ at the bottom. I hope you 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> 

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 }; } 

Thank you very much.

Edit: even the breakdown has already been fixed: android: fillViewPort = "true", I want to show you the problem.

But I donโ€™t have enough reputation to post a picture. Sorry!

+56
android android-layout android-fragments
Feb 26 '13 at 17:00
source share
3 answers

If I'm not mistaken, the height is a ViewGroup height ( LinearLayout height in your case), that is (only) a child inside ScrollView , is always interpreted as wrap_content, as this content may be larger than the height of the ScrollView (hence the scroll bar).

It also means that if the content is smaller, the contents of the ScrollView (child) may not stretch to fill the screen.

To visually help you fix this, we should see a screenshot of your problem.

Perhaps setting android:fillViewport="true" in ScrollView fix your problem:

 <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"> 
+177
Feb 26 '13 at 17:11
source share
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fillViewport="true" android:fadeScrollbars="false" android:scrollbars="vertical" > 

In your ScrollView add the ie attribute. android: fillViewport = "true"

+4
Sep 24 '14 at 12:55
source share
 inflater.inflate(R.layout.menu_content_main, container); 

it should be

 inflater.inflate(R.layout.menu_content_main, container, false); 
+2
Feb 26 '13 at 17:04 on
source share



All Articles