Le ScrollView Mise en page ne remplit pas tout l'écran
J'ai eu un Activity
avec deux Fragment
s (une liste normale).
Et la normale Fragment
gonfle un Scrollview
contenant un LineaLayout
(vertical) et cette disposition contient TextViews
.
Le ScrollView
et layout_width
et layout_height
sont match_parent
, donc je pense que la totalité de l'écran doit être utilisé. Mais sur le fond il y a toujours un "écart".
J'espère que vous pourrez m'aider.
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>
le fragment de gonflage de cette disposition.
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 };
}
Merci beaucoup.
Edit: Même le problème est déjà résolu avec: android:fillViewPort="true", je tiens à vous montrer le problème.
Mais je n'ai pas assez de réputation pour poster une photo.
Désolé!
- pouvez-vous poster une capture d'écran?
Vous devez vous connecter pour publier un commentaire.
Si je ne me trompe pas, le
ViewGroup
hauteur (LinearLayout
hauteur dans votre cas), c'est le (seul) enfant à l'intérieur d'unScrollView
, est toujours interprétée comme wrap_content, étant donné que le contenu peut être plus grande que laScrollView
hauteur (d'où les barres de défilement).Cela signifie également que si le contenu est petits, le
ScrollView
's le contenu (l'enfant) ne peut pas nécessairement s'étirer pour remplir l'écran.Pour déficients vous aider à résoudre ce problème, nous avons besoin de voir une capture d'écran de votre problème.
Peut-être mettre en
android:fillViewport="true"
sur leScrollView
permettra de résoudre votre problème:LinearLayout
avait suffisamment de contenu pour prendre plus de l'espace de l'écran, mais encore, la Scrollview n'était pas en plein écran et en laissant de l'ordre de 10% de l'écran en bas. fillViewPort il fixe. J'avais été déconner avec le code depuis hier. Vous êtes le sauveur de l'homme!android:layout_height="match_parent"
devrait êtreandroid:layout_height="wrap_content"
Dans votre
ScrollView
ajouter un attribut ie.android:layout_height="fill_parent"
devrait êtreandroid:layout_height="wrap_content"
devrait être
J'ai eu un problème similaire et ne pouvait la fixer avec une Classe d'aide. J'ai trouvé le code original en ligne, et c'est ma mise en œuvre.
Classe Java:
XML: