Вы можете использовать RelativeLayout. Предположим, вы хотели получить 30x40 ImageView в позиции (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);
Другие примеры:
Места два 30x40 ImageViews (один желтый, один красный) в (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);
места один 30х40 желтый ImageView в (50,60), а другой 30x40 красного ImageView < 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);
также см 'view.setTranslationX()' или 'view.offsetLeftAndRight()' –
Я только что выпустили библиотеку, которая, возможно, был интерес здесь. github.com/ManuelPeinado/ImageLayout – Manuel
Это так сложно, потому что 99,9% времени абсолютного позиционирования - плохая идея для Android. Если вы пишете приложение, которое будет * ТОЛЬКО когда-либо выполняться на одном физическом устройстве, это может сработать, но это, как правило, не является безопасным предположением. Например, не загружайте это в игру Google.Он отлично работает на iOS, потому что есть только несколько аппаратных устройств, и вы можете создавать собственные раскадровки для каждого из них. – edthethird