Необходимые пользовательские атрибуты

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». Может быть, это поможет.

Intereting Posts
Проблемы с сертификатами WSS и SSL в Android Использование адаптера настраиваемого списка с помощью AutoCompleteTextView и по-прежнему сохраняя функциональность автоматического завершения работы одинаково Как установить BackgroundColor на ImageView на Android? Нарисуйте дерево (буквально) с помощью кругов в Android – не структура дерева Не удается запустить приложение Android на моем устройстве Получить Android .apk-файл VersionName или VersionCode БЕЗ установки apk Почему я должен использовать службу android вместо java-потока Разница между addOnLayoutChangeListener и onLayout (изменена)? RecyclerView прогностические анимации элементов не работают (ПОЯВЛЕНИЕ) Android 4.3 KeyStore – chain == null при попытке получить ключи Приложение несовместимо со всеми устройствами после публикации на Market, но то же самое было при перемещении непосредственно на устройство Есть ли эквивалентная функция requestAudioFocus в Android API 7? Изменить активность с помощью javaScript в Android Как установить unicode в textview, чтобы показать emoji в android? TextView в виджетах Android не обновляется