Библиотека com.android.support:percent:25.0.1 позволяет работать с процентами. Значит можно получить и размер дисплея в пикселях в xml. Как ?
Коллега,
Вы похоже, не совсем точно представляете как работает оконная система Android'а
XML это ваши пожелания как бы вы хотели, чтобы выглядел экран. Далее начинается развертка ваших хотелок на физическом экране. Развертка выполняется в 2 этапа:
View.measure()
, метод вызывает onMeasure()
, который может быть перехвачен разработчиком.measure/onMeasure()
- это производится методом View.layout()
, в ходе присвоения размеров вызывается onLayout()
, который также может быть перехвачен.Замер размеров и присвоение происходит динамически то есть runtime, соответственно, отсутствует способ задать статические размеры в XML.
Динамически найти размеры экрана устройства не представляет никакой сложности, код типа:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x; //ширина экрана в пикселях
int height = size.y; //высота экрана в пикселях
Эти размеры по идее вы должны использовать в onMeasure()/onLayout()
, для того чтобы придать желаемый размер вашему кастомному View
Погуглите на тему custom+view+android
Работа с px не рекомендуется, это где такое сказано? Любые динамические манипуляции в коде будут проходить в px, поэтому зачастую перед более большим проектом пишется утилита, которая генерирует px -> dp, для удобной работы, но по факту, 'почти' все динамические измерения в px. Что касается вопроса, библиотека и получения размеров это две разные вещи, библиотека для того и нужна чтоб, не получать эти размеры, а смело ставить проценты, а она в коробке сама считает все остальное. Ну а если вы уже вытащили размеры вашего парента, не надо много ума, чтоб разделить этот размер на размер вашего элемента и получить те же самые проценты, или поставить процент от вашего размера, чтоб задать нужный размер уже в пикселях, ну или если вернутся в начало можно использовать свою утиль, чтоб удобно ставить в % а на выходе иметь dp.
PS Bonus: В такой ситуации рекомендую использовать FrameLayout, он хорошо подойдет именно для таких манипуляций, а для списков может дать значительный прирост производительности, парой очень большой. Такие примеры можно увидеть в глобальных OpenSource, в топовых мессенджерах и файлменеджерах...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Нужно написать регулярное выражение, которое могло бы достать любую ссылку из данного тэга:
Есть некий интерфейс:
Имею AutoCompleteTextViewХочу изменить цвет текста, если нет совпадений