Какую единицу измерения использует LayoutParams?
pI я работаю с линейной компоновкой и хочу установить максимальную высоту представления. В "нормальных" обстоятельствах я хочу, чтобы представление использовало " wrap_content."Однако иногда обстоятельства могут подтолкнуть макет к нежелательным размерам. Когда это произойдет, я хочу ограничить высоту до максимума 300dp.
Я установил размер представления, используя следующее, Когда список в макете превышает 4 элемента списка:
LinearLayout listLayout = (LinearLayout) dialog.findViewById(R.id.listLayout);
if(list.size() > 4){
LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 300);
listLayout.setLayoutParams(params);
}
обзор документация не оставляет мне ни малейшего понятия о применяемой единице измерения. Каковы единицы измерения в этой ситуации (dp, sp, px,...)?
запуск тестов, даже установка значения 100 имеет список, превышающий желаемую высоту.
пожалуйста
3 ответов
согласно документации, которую вы связали: пиксели. См.эта функция
ширина, либо MATCH_PARENT, WRAP_CONTENT или фиксированный размер в пиксели
хотя функция, которую вы используете, не имеет явной документации, подразумевается, что она использует ту же документацию, что и функция с большинством параметров. Сама функция, вероятно, выглядит так:
LinearLayout.LayoutParams(int width, int height) {
this(width, height, /*some default value*/);
}
т. е. это просто вызов версии 3-parameter со значением по умолчанию.
Как сказал Дэвид, установка LayoutParams через код устанавливается в пикселях. Вы можете использовать код этой теме для преобразования нужного dp в px.
вот полный класс с импортом, если у вас возникли проблемы - @Pierre.Vriens
//usage: int 300dpInPixels = util.convertDpToPixel(300);
import android.content.res.Resources;
import android.util.DisplayMetrics;
public class utils {
public static int convertDpToPixel(float dp){
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float px = dp * (metrics.densityDpi / 160f);
return Math.round(px);
}
}