Intereting Posts
Как поддерживать сервлет серфинга App Engine в Firebase Что лучше использовать несколько AsyncTask или HandlerThread (Pipeline Thread)? Android: Что происходит с моей деятельностью в случае входящего звонка? Android AlertDialog внутри анонимной функции Разработка Python SL4A Получить доступ к данным, связанным с проектом, из команды Gradle Съемка с пользовательской камеры растягивается при сохранении в ImageView Производительность Android: плоский файл с SQLite Сделка с действием намерения (ACTION_NETWORK_OPERATOR_SETTINGS) не найдена Как игнорировать ошибки XML при разборе ошибочного XML с Sax (на Android) Может ли покупка в приложении предотвращать пиратство в программном обеспечении? Android: стратегия кэширования изображений и размер кеша памяти Переработка просмотров в адаптере пользовательского массива: как именно он обрабатывается? Проблемы с Android KSoap2 и Array Медленный опрос сенсорных сообщений на Android через браузер и собственное приложение

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

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