2010-04-28 3 views
0

Я пытаюсь создать приложение для Android, которое имеет графический дисплей, нарисованный внутри RelativeLayout. Я хочу разместить кнопки «+» и «-» рядом с несколькими параметрами, которые нарисованы в разных точках холста. Позиции свободной формы, похоже, не соответствуют ни одному из стандартных XML-макетов.Кнопка Android в произвольном положении над RelativeLayout

Я знаю, как создавать кнопки программно, но я не знаю, как разместить их поверх холста, где они мне нужны. Я предполагаю, что это будет сделано в методе doDraw() потока потока представления, после того как графика будет нарисована, но как?

ответ

0

Я боролся с той же проблемой, и узнал отличный solution.

RelativeLayout правила, как «LeftOf» или «RightOf» может быть реализован программно, как это:

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); 

Так, в коде вы можете создать «контейнер» RelativeLayout, а затем добавить несколько View с с уникальным ID-х и , наконец, создать объект RelativeLayout.LayoutParams, чтобы достичь методов сладкого сахара для выравнивания, как в XML.