Я хочу, чтобы мои RelativeLayouts были одинакового размера и положения независимо от размера экрана устройства (относительно). Например:RelativeLayout размер и позиция (поля)
Если устройство А имеет ширину экрана 480 и высоту 800 и устройства В имеет ширину экрана 720 и высотой 1280, мой RelativeLayout должен иметь, например, 160 и ширину 267 высота в устройство A и 240 ширина и 427 высота в устройство B. Это просто, просто получить ширину и высоту экрана и рассчитать процент, который вы хотите. Эта часть, которую я сделал с этим кодом ниже, и работает:
int width = methodToGetScreenWidth();
relativeOneWidth = ((width/100) * 90); // 90% of the screen width.
relativeOneHeight = (int) (relativeOneWidth/1.75f);
relativeTwoWidth = (relativeOneWidth/2);
relativeTwoHeight = (relativeOneHeight/4);
relativeThreeWidth = (relativeOneWidth/4);
relativeThreeHeight = (relativeOneHeight/4);
Он отлично работает на всех проверенных мной устройствах. Проблема заключается в положении. Я пробовал много вещей, чтобы рассчитать поля, но он не был в одном положении в каждом устройстве (чаще всего он очень близок к желаемой позиции, но не точно). Вот что я пробовал:
relativeOneLeftMargin = ((width - relativeOneWidth)/2); // The screen width - the relativeOne width/2, it should returns the relativeOne left margin, shouldn't it?
relativeOneTopMargin = ((height - relativeOneHeight)/2); // And this, the relativeOne top margin, right?
relativeTwoLeftMargin = (int) (relativeOneLeftMargin * 1.5f);
relativeTwoTopMargin = (int) (relativeOneTopMargin * 0.78f);
relativeThreeLeftMargin = relativeOneTopMargin + relativeOneHeight;
PS: relativeOne находится в центре экрана:
relativeOne.addRule(RelativeLayout.CENTER_IN_PARENT);
Я также попытался получить задворках таким образом, но она возвращает 0:
relativeOne.getLeft();
relativeOne.getTop();
Я действительно не знаю, почему это не в том же положении на всех устройствах. Любое предложение?