Android: layout_width и android: layout_height – обязательные атрибуты, т. Е. Если вы не укажете их для макета, Android Studio сообщит мне: «Элемент x не имеет обязательного атрибута android: layout_height».
Я определяю некоторые пользовательские атрибуты в своих собственных классах, и я хотел бы потребовать, чтобы каждый, кто использует их в xml, указывал значения так же, как они должны были указывать layout_width и layout_height.
Как мне это сделать? Есть ли что-то, что я могу добавить в attrs.xml здесь:
<declare-styleable name="MyStyleable"> <attr name="myAttribute" format="float"/> </declare-styleable>
Или, может быть, в style.xml здесь:
<style name="MyStyle"> <item name="myAttribute">3</item> </style>
AFAIK, в настоящее время attr
s не имеют никаких атрибутов, чтобы отметить их обязательными. ( "layout_width"
и т. П. – очень распространенные ошибки, проверка которых "layout_width"
с SDK)
Однако вы можете исключить RuntimeException
из своего пользовательского View
если отсутствует атрибут (который вы можете определить, вызывая TypedArray.hasValue()
). TypedArray
делает это в getLayoutDimension()
.
Это именно то поведение, которое вы получаете, если компилируете приложение, в котором отсутствует "layout_width"
где-нибудь, используя инструменты командной строки (т. Е. Нет Eclipse или Idea для обнаружения отсутствующего атрибута и предотвращения компиляции): вы запускаете приложение, и он выходит из строя с помощью RuntimeException
Говоря, что вам не хватает атрибута.
Попробуйте взглянуть на эту ссылку . Существует информация о том, как определяются «wrap_content» и «match_parent». Может быть, это поможет.