2 votes

Deux graphiques dans un seul écran

J'ai essayé d'afficher deux graphiques sur un seul écran mais je n'y arrive pas. Voici le code où j'affiche un graphique dans la fonction onClick :

case R.id.graphs:
            GraphicalView mChartView = new Niveau().execute(this);
            LinearLayout layout = (LinearLayout) findViewById(R.id.graph);
            layout.removeAllViews();
            layout.addView(mChartView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            break;

Une idée ?

Merci beaucoup !

1voto

Prabuddha Points 37089

Avant d'ajouter la deuxième mise en page, vous devez appeler layout.removeAllViews(); de sorte que votre mise en page est maintenant libre d'afficher une autre mise en page à l'intérieur. Essayez donc de supprimer d'abord et d'ajouter ensuite la deuxième mise en page.

1voto

Guillaume Points 10121
case R.id.graphs:
        GraphicalView mChartView1 = new Niveau().execute(this);
        GraphicalView mChartView2 = //  another chartView creation
        LinearLayout layout = (LinearLayout) findViewById(R.id.graph);
        layout.removeAllViews();
        layout.addView(mChartView1, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        layout.addView(mChartView2, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        break;

Ça devrait marcher. Assurez-vous d'avoir des identifiants différents sur votre mChartView - si vous les créez de manière programmatique et non pas gonflés à partir d'une mise en page XML, vous devez également définir l'id de manière programmatique :

mChartView1.setId(1);
mChartView2.setId(2);

En outre, un RelativeLayout vous offrira probablement plus de possibilités de personnalisation en termes de mise en page et de positionnement. Vous devez alors définir les positions relatives dans vos paramètres de mise en page :

RelativeLayout layout = (RelativeLayout) findViewById(R.id.graph);
....
RelativeLayout.LayoutParams paramsForChart2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
paramsForChart2.addRule(RelativeLayout.RIGHT_OF, mChartView1.getId());
layout.addView(mChartView2, paramsForChart2);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X