Кнопка Android в произвольном положении над RelativeLayout - PullRequest
0 голосов
/ 29 апреля 2010

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

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

1 Ответ

0 голосов
/ 04 августа 2010

Я боролся с той же проблемой и нашел отличное решение .

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 с уникальными идентификаторами и, наконец, создать объект RelativeLayout.LayoutParams для достижения методов выравнивания типа сладкого сахара, как XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...