Установите абсолютное положение представления

Действительно ли возможно установить абсолютное положение представления в Android? (Я знаю, что существует AbsoluteLayout, но это удержало от использования...),

Например, если у меня есть экран на 240x320 пкс, как я мог добавить ImageView который составляет 20x20 пкс, таким образом, что его центр в положении (100,100)?

177
задан CJBS 3 March 2016 в 18:34
поделиться

1 ответ

Вы можете использовать RelativeLayout. Допустим, вам нужен ImageView размером 30x40 в позиции (50,60) внутри вашего макета. Где-то в вашей деятельности:

// Some existing RelativeLayout from your layout xml
RelativeLayout rl = (RelativeLayout) findViewById(R.id.my_relative_layout);

ImageView iv = new ImageView(this);

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(30, 40);
params.leftMargin = 50;
params.topMargin = 60;
rl.addView(iv, params);

Дополнительные примеры:

Помещает два ImageView 30x40 (один желтый, один красный) в (50,60) и (80,90) соответственно:

RelativeLayout rl = (RelativeLayout) findViewById(R.id.my_relative_layout);
ImageView iv;
RelativeLayout.LayoutParams params;

iv = new ImageView(this);
iv.setBackgroundColor(Color.YELLOW);
params = new RelativeLayout.LayoutParams(30, 40);
params.leftMargin = 50;
params.topMargin = 60;
rl.addView(iv, params);

iv = new ImageView(this);
iv.setBackgroundColor(Color.RED);
params = new RelativeLayout.LayoutParams(30, 40);
params.leftMargin = 80;
params.topMargin = 90;
rl.addView(iv, params);

Помещает один желтый ImageView 30x40 в ( 50,60) и еще один красный ImageView 30x40 <80,90> относительно желтого ImageView:

RelativeLayout rl = (RelativeLayout) findViewById(R.id.my_relative_layout);
ImageView iv;
RelativeLayout.LayoutParams params;

int yellow_iv_id = 123; // Some arbitrary ID value.

iv = new ImageView(this);
iv.setId(yellow_iv_id);
iv.setBackgroundColor(Color.YELLOW);
params = new RelativeLayout.LayoutParams(30, 40);
params.leftMargin = 50;
params.topMargin = 60;
rl.addView(iv, params);

iv = new ImageView(this);
iv.setBackgroundColor(Color.RED);
params = new RelativeLayout.LayoutParams(30, 40);
params.leftMargin = 80;
params.topMargin = 90;

// This line defines how params.leftMargin and params.topMargin are interpreted.
// In this case, "<80,90>" means <80,90> to the right of the yellow ImageView.
params.addRule(RelativeLayout.RIGHT_OF, yellow_iv_id);

rl.addView(iv, params);
266
ответ дан 23 November 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: