Проблема
Я хочу переопределить файл макета из пространства имен android, например. R.layout.popup_menu_item_layout
(который ссылается на код как com.android.internal.R.layout.popup_menu_item_layout
). Говоря о переопределении, я предполагаю объявление файла xml
в проекте, который будет приоритетным по сравнению с макетом, который имеет собственная структура.
Обратите внимание, что это всего лишь пример макета, поэтому вопрос касается каждого макета, который присутствует в каталоге sdk/platforms/android-XX/data/res/layout
.
Что я пробовал
<сильные > инструменты: переопределение
Там доступен недокументированный tools:override
, который переопределяет определенные ресурсы. См. этот для примера, который переопределяет значения из Библиотека поддержки дизайна, не из платформы Android.
Применение tools:override="true"
к корневому тегу макета не вступает в силу.
Ссылки на XML-макеты - refs.xml
Как описано в this post, объявив файл refs.xml
в каталоге /values/
со следующим содержимым:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="layout" name="activity_main">@layout/activity_second</item>
</resources>
будет ссылаться на activity_second.xml
после использования activity_main.xml
. Там ответ, который предлагает использовать этот метод, чтобы заменить макет Snackbar
.
Это также не вступит в силу.
Вопрос
Есть ли законный способ переопределить/заменить файл макета из пакета android?