Я написал пользовательский вид, который переопределяет onMeasure() и onLayout(), чтобы выполнить очень конкретную задачу, игнорируя некоторые атрибуты, такие как layout_height и layout_width. Поскольку уже не имеет смысла указывать эти атрибуты, я хочу опустить их в своем XML-макете. Но если я делаю, я получаю исключение говорит, что атрибуты необходимы:Программно добавить в AttributeSet в пользовательском представлении
RuntimeException: Binary XML file line #49: You must supply a layout_width attribute.
Есть ли способ, чтобы больше не требует определенных обязательных атрибутов?
Я собирался попробовать добавить эти свойства программным путем в конструкторе View, но у AttributeSet только есть методы для извлечения значений, а не для их установки. Я посмотрел, могу ли я найти решение, используя attrs.xml, но не видел ничего перспективного. Идеи?
Почему вы не можете просто использовать эти атрибуты (с любым желаемым значением) и игнорировать их, если они вам не нужны? – Luksprog
Я могу (и делать), но я бы предпочел избежать беспорядка указания «обязательных» атрибутов, которые полностью игнорируются. Похоже, для этого есть прецедент. Например, SlidingDrawer от Android также не учитывает высоту и ширину. Поэтому мне было любопытно, если Android предоставил возможность опустить стандартные атрибуты, которые обычно (но не всегда) требуются. Кажется, это не так, но я подумал, что это стоит того. – spaaarky21
'SlidingDrawer' не учитывает высоту и ширину, но для этого ** требуется ** те атрибуты, которые будут присутствовать (чтобы вы могли увидеть, как инженеры SDK решили проблему, с которой вы столкнулись). Во всяком случае, эта проверка выполняется, когда «LayoutParams» для представления построены, поэтому вы не можете много сделать (и в любом случае это не стоило бы усилий). – Luksprog