Мне было интересно, возможно ли изменить высоту LinearLayout в моем java-коде от чего-то вроде 100dp до 200dp?
Да.
(int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 2, this.getResources()
.getDisplayMetrics()));
также вы можете добавить измерение в значения и получить его из ресурсов.
Попробуйте этот учебник http://developer.android.com/guide/practices/screens_support.html#DensityConsiderations
Это может помочь вам преобразовать dp в px. Это значение px, которое вы можете установить в LayoutParams. Надеюсь, это полезно
// The gesture threshold expressed in dp
private static final float GESTURE_THRESHOLD_DP = 16.0f;
// Get the screen density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale
mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f);
// Use mGestureThreshold as a distance in pixels...
Поле DisplayMetrics.density
указывает коэффициент масштабирования, который вы должны использовать для преобразования единиц dp
в пиксели в соответствии с текущей плотностью экрана. На экране средней плотности DisplayMetrics.density
равен 1.0;
на экране с высокой плотностью он равен 1.5;
на дополнительном экране с высокой плотностью он равен 2.0;
и на экране с низкой плотностью он равен 0.75
. Эта цифра является фактором, с помощью которого вы должны умножить единицы измерения dp
на порядок, чтобы получить фактическое количество пикселей для текущего экрана. (Затем добавьте 0.5f
для округления фигуры до ближайшего целого числа при преобразовании в целое число.) Для получения дополнительной информации обратитесь к классу DisplayMetrics.
Ответ от документации по Android, поэтому вам не нужно искать контент