Если вы хотите придерживаться относительной компоновки, вы можете сделать это следующим образом, получите ширину экрана следующим образом (необходимо получить значение в пикселях)
private int Screendp(){
DisplayMetrics dm = new DisplayMetrics();
WindowManager windowManager = (WindowManager) this.getSystemService(WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(dm);
int widthInDP = Math.round(dm.widthPixels / dm.density);
return widthInDP;
}
это то, как мы можем конвертировать dp
в px
public int dpToPx(int dp) {
float density = this.getResources()
.getDisplayMetrics()
.density;
return Math.round((float) dp * density);
}
Таким образом, в вашей деятельности установите l layoutparams
для каждого и каждого дочернего представления, как показано ниже,
parent= findViewById(R.id.parent);
left= findViewById(R.id.left );
middle= findViewById(R.id.middle);
right= findViewById(R.id.right );
RelativeLayout.LayoutParams leftparams = new RelativeLayout.LayoutParams( dpToPx(64), dpToPx(64));
leftparams.leftMargin= 0;
left.setLayoutParams(leftparams);
RelativeLayout.LayoutParams middleparams = new RelativeLayout.LayoutParams( dpToPx(64), dpToPx(64));
middleparams.leftMargin=dpToPx((Screendp()/3));
middle.setLayoutParams(middleparams);
RelativeLayout.LayoutParams rightparams = new RelativeLayout.LayoutParams( dpToPx(64), dpToPx(64));
rightparams.leftMargin=dpToPx((Screendp()/3)*2);
right.setLayoutParams(rightparams);
Это работает, и я попробовал это.