2010-04-28 6 views
0

J'essaye de construire une application android qui comporte un affichage graphique dessiné dans un RelativeLayout. Je veux placer les boutons "+" et "-" à côté de plusieurs des paramètres, qui sont dessinés à divers points de la toile. Les positions sont de forme libre ne semblent pas conformes à l'une des dispositions XML standard.Bouton Android en position arbitraire sur RelativeLayout

Je sais comment créer les boutons par programmation, mais je ne sais pas comment les placer sur la toile où j'en ai besoin. Je suppose que cela serait fait dans la méthode doDraw() du thread de vue, après que tous les graphiques aient été dessinés, mais comment?

Répondre

0

J'ai lutté avec le même problème, et j'ai découvert solution.

RelativeLayout règles comme « leftOf » ou « RightOf » peut être mis en œuvre par programme comme celui-ci:

RelativeLayout container = new RelativeLayout(getApplicationContext()); 

Button weight = new Button(getApplicationContext()); 
final int WEIGHT_ID = 0; 
weight.setId(WEIGHT_ID); 
weight.setText("0.0"); 
LayoutParams wrapBoth = 
    new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
container.addView(weight, wrapBoth); 

Button increaseWeight = new Button(getApplicationContext()); 
increaseWeight.setText("+"); 
// Note the difference: RelativeLayout.LayoutParams in spite of LayoutParams 
RelativeLayout.LayoutParams toBeRightOfWeight = 
    new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
container.addView(parameter,wrapBoth); 
// Sweet part 
clearAirParams.addRule(RelativeLayout.RIGHT_OF, WEIGHT_ID); 
container.addView(increaseWeight, toBeRightOfWeight); 

Ainsi, dans le code, vous pouvez créer un « conteneur » RelativeLayout, puis ajoutez plusieurs View s avec ID uniques et , enfin, créer RelativeLayout.LayoutParams objet pour réaliser des méthodes d'alignement en douceur, comme en XML.

Questions connexes