Android - Faire une ScrollView avec LinearLayout
Je veux faire une ScrollView avec un LinearLayout à l'intérieur. Le linéaire de la mise en page contient 6 avis que le contexte est le CYAN, le BLEU, le CYAN, le BLEU etc... C'est le code:
public class TouchActivity extends Activity
{
TouchedView TouchView;
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
TouchView = new TouchedView(this);
TouchView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT , LayoutParams.WRAP_CONTENT) );
//setContentView(TouchView);
setContentView(TouchView.ViewLayout);
}
class TouchedView extends ScrollView
{
LinearLayout ViewLayout;
ListElement Elem1;
ListElement Elem2;
ListElement Elem3;
ListElement Elem4;
ListElement Elem5;
ListElement Elem6;
public TouchedView(Context context)
{
super(context);
ViewLayout = new TableLayout(TouchActivity.this);
ViewLayout.setOrientation(LinearLayout.VERTICAL);
Elem1 = new ListElement(TouchActivity.this , "CYAN");
Elem1.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT , 100 ) );
Elem2 = new ListElement(TouchActivity.this , "BLUE");
Elem2.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT , 100 ) );
Elem3 = new ListElement(TouchActivity.this , "CYAN");
Elem3.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT , 100 ) );
Elem4 = new ListElement(TouchActivity.this , "BLUE");
Elem4.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT , 100 ) );
Elem5 = new ListElement(TouchActivity.this , "CYAN");
Elem5.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT , 100 ) );
Elem6 = new ListElement(TouchActivity.this , "BLUE");
Elem6.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.MATCH_PARENT , 100 ) );
ViewLayout.addView(Elem1);
ViewLayout.addView(Elem2);
ViewLayout.addView(Elem3);
ViewLayout.addView(Elem4);
ViewLayout.addView(Elem5);
ViewLayout.addView(Elem6);
setFillViewport(false);
setContentView(ViewLayout);
}
}
class ListElement extends View
{
public ListElement(Context context , String TypeName)
{
super(context);
if(TypeName.compareTo("CYAN") == 0) this.setBackgroundColor(Color.CYAN);
if(TypeName.compareTo("BLUE") == 0) this.setBackgroundColor(Color.BLUE);
}
}
}
Le résultat est que le 6 vue sont trop grande pour être contenue dans le LinearLayout:
http://img513.imageshack.us/img513/5406/androidbadscrollview2.jpg
Mais si j'ai fait un commentaire setContentView(TouchView.ViewLayout);
et je décommentez //setContentView(TouchView);
mon activité doit être rempli avec de la ScrollView au lieu de la LinearLayout
mais malheureusement je ne peux pas voir quoi que ce soit.
Noter que le ScrollView
contient les LinearLayout
qui est défini par setContentView(ViewLayout);
OriginalL'auteur Bemipefe | 2012-06-11
Vous devez vous connecter pour publier un commentaire.
Voir http://www.vogella.com/articles/Android/article.html#gridlayout_scrollview
Au lieu de le TextView vous pouvez déclarer tout childs u veux.
Il est juste important que votre scrollview n'ont seulement UN chield (c'est à dire un linearLayout).
En outre, vous devez TOUJOURS code autant de mise en page en xml que possible!
OriginalL'auteur Thkru
J'ai fait deux erreurs:
La première est de passer un TableLayout paramètre au lieu de LinearLayout paramètre, je veux dire:
Et la seconde de prolonger une ScrollView semble ne pas être une bonne chose. Donc, la création d'une simple ScrollView objet avec un LineraLayaout à l'intérieur est la solution.
Ici est la code de travail:
OriginalL'auteur Bemipefe