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