ScrollView布局不填满整个屏幕
我得到了两个Fragment
的Activity
(一个正常的名单)。 正常的Fragment
膨胀一个包含LineaLayout
(垂直)的LineaLayout
,这个布局包含TextViews
。 ScrollView
和layout_width
和layout_height
是match_parent
,所以我认为应该使用整个屏幕。 但是底部还是有一个“差距”。 我希望你能帮助我。
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>
使这个布局膨胀的片段。
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 }; }
非常感谢。
编辑:即使这个问题已经修复:android:fillViewPort =“true”,我想告诉你的问题。
但是我没有足够的声望张贴图片。 抱歉!
如果我没有弄错, ViewGroup
的高度(在你的情况下是LinearLayout
的高度),也就是ScrollView
的(唯一)子ScrollView
,总是被解释为wrap_content,因为这个内容可能比ScrollView
的大高度(因此滚动条)。
这也意味着,如果内容较小 , ScrollView
的内容(子)可能不一定伸展到填满屏幕。
为了在视觉上帮助你解决这个问题,我们需要看到你的问题的截图。
也许在ScrollView
上设置android:fillViewport="true"
会解决你的问题:
<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">
<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" >
在你的ScrollView添加一个属性即。 机器人:fillViewport = “真”
inflater.inflate(R.layout.menu_content_main, container);
应该
inflater.inflate(R.layout.menu_content_main, container, false);