Как получить разрешенные значения тега `android:layout_width` (или height) в пользовательском представлении

Прежде всего вопросы по моей теме:

Как мне получить доступ к layout_height из моего пользовательского представления ?

Как получить значения тега android: в Пользовательский вид.

Итак, у меня есть результат String, что нормально, но вопрос заключается в следующем: есть ли способ как-то автоматически проанализировать результат String, который я получаю от attrs.getAttributeValue(), или есть решение, чтобы как-то его получить в уже проанализированном формате (= получить значение в пикселях)? Например, когда вы звоните getDimensionPixelSize().

Потому что возвращаемый String может иметь такие значения, как ?2130772036 (ссылка), -2 (wrap_content), 122.0dip (или в худшем случае 122px, 122mm и т. д.).

И я не хочу добавлять layout_height к своему пользовательскому attrs.xml, если в этом нет необходимости.


person ktamas    schedule 15.11.2016    source источник
comment
вы знаете о методе onMeasure?   -  person pskink    schedule 15.11.2016
comment
Да, но дело в том, что я хочу получить информацию о высоте до вызова onMeasure. У меня есть пользовательская функция, и когда она вызывается, макет еще не отображается, но мне уже нужна высота для управления другими представлениями на основе высоты этого. Я мог бы пойти с решением getMeasuredHeight(), но все же было бы неплохо получить высоту из атрибутов.   -  person ktamas    schedule 15.11.2016
comment
Ну, в качестве дополнительной информации: мое представление GONE, когда я вызываю для него свою пользовательскую функцию, поэтому onMeasure в это время еще не вызывается.   -  person ktamas    schedule 15.11.2016
comment
если вам нужен размер в пикселях, это правильное место, иначе вы получите такие вещи, как -1 / -2 (для размеров, таких как match_parent / wrap_content)   -  person pskink    schedule 15.11.2016
comment
Вероятно, мне придется пойти с этим: stackoverflow.com/a/10134260/7138729   -  person ktamas    schedule 15.11.2016
comment
это вызывается после вызова onMeasure / onLayout   -  person pskink    schedule 15.11.2016
comment
Ну, суть в том, чтобы получить высоту перед ее отображением и иметь возможность измерить ее, когда я хочу, а не когда пользователь вызывает display. Я просто подумал, что во время onMeasure или onLayout пути назад нет и если я вызову setVisibility(GONE) на эти функции, то представление может мигнуть на мгновение, а я этого точно не хочу. Однако, если вид не мигает, и я могу контролировать, когда измерять высоту, тогда все в порядке. Извините за неточность.   -  person ktamas    schedule 15.11.2016
comment
так что, может быть, вам будет полезен прямой вызов View#measure?   -  person pskink    schedule 15.11.2016