0

Я создавал приложение для Android. что будет динамически создавать вопросы. но на основе размера экрана мобильного экрана не происходит должным образом. Я не знаю, как решить эту проблему. Я приложил изображение, которое взято из разных мобильных телефонов. Размер экрана -3,7" , Размер экрана -5,0"Исправлена ​​проблема с размером экрана Программно в android

enter image description hereenter image description here

Все размеры элементные изменяются на основе экрана size.can любой помощи, чтобы отобразить экран реагирующий на андроид.

Мой код ...

lView.setBackgroundColor(Color.parseColor("#FFFFFF")); 
lView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
LinearLayout.LayoutParams layoutParams2 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 220); 
GradientDrawable gdtitle = new GradientDrawable(); 

gdtitle.setCornerRadius(5); 
ImageView title = new ImageView(Main2Activity.this); 
title.setImageResource(R.drawable.logo); 
title.setLayoutParams(layoutParams2); 
title.setBackgroundDrawable(gdtitle); 
lView.setOrientation(LinearLayout.VERTICAL); 
lView.addView(title); 

GradientDrawable gd3 = new GradientDrawable(); 
gd3.setCornerRadius(30); 
gd3.setColor(Color.parseColor("#003366")); 
gd3.setStroke(0, 0xFF000000); 

TextView uname1 = new TextView(Main2Activity.this); 
uname1.setText("Hello , "+Sessionname); 
uname1.setGravity(Gravity.LEFT); 
uname1.setTextColor(Color.parseColor("#003366")); 
uname1.setTextSize(20); 
uname1.setLayoutParams(l2); 

et1 = new TextView(Main2Activity.this); 
et1.setHeight(100); 
et1.setTextColor(Color.WHITE); 
et1.setHintTextColor(Color.WHITE); 
et1.setGravity(Gravity.CENTER); 
et1.setHint("Select Date"); 
et1.setBackgroundDrawable(gd3); 
et1.setTextSize(15); 
et1.setLayoutParams(l2); 

lView.setOrientation(LinearLayout.HORIZONTAL); 

LinearLayout.LayoutParams l4 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); 
l4.gravity=Gravity.CENTER; 
lHorizontalView1.setOrientation(LinearLayout.HORIZONTAL); 
lHorizontalView1.setLayoutParams(l4); 
lHorizontalView1.addView(uname1); 
lHorizontalView1.addView(et1); 
lView.addView(lHorizontalView1); 

ответ

1

Вы закодировав свои значения в пикселях. Например, для вашей высоты вы вызываете setHeight(100), что означает, что этот View будет 100px высокий. Однако при разных плотностях экрана это будет выглядеть совершенно иначе. При фиксированном размере экрана (скажем, 5 дюймов) одно устройство может иметь разрешение 480x800, а другое может быть 1440x2560, ваша настройка 100px будет выглядеть точно так, как у вас есть сейчас.

Используйте Display Metrics вместо того, чтобы получить плотность экрана и использовать device independent pixels (dip или dp) вместо пикселов (px) в качестве единиц. Например, вы можете установить высоту по плотности устройства, как это:

setHeight(100 * getResources().getDisplayMetrics().density);

Однако нужная высота, возможно, придется быть меньше, так как это станет 100dp так что вы, возможно, придется установить его на что-то как 50. Играйте, пока не получите желаемые результаты.

, то ваш View будет выглядеть одинаково на всех устройствах.