Ответ 1
Можно ли обойти любое из этих правил, чтобы использовать слияние тег для макета фрагмента?
Нет. Как вы уже видели, когда вы раздуваете файл макета с тегом merge
в качестве своего корня, вы должны прикреплять его к допустимому родительскому элементу ViewGroup
. Прикрепление его к контейнеру в onCreateView
неверно, так как View
, возвращаемый этим методом, будет добавлен каркасом.
Вы всегда можете создать макет оболочки в методе onCreateView
, с помощью которого можно подключить раздутый макет (и вернуть этот макет оболочки), но это сделает оптимизацию тегов merge
бесполезной, поскольку вы можете добавить макет оболочки в файле макета xml с самого начала:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LinearLayout wrapper = new LinearLayout(getActivity()); // for example
inflater.inflate(R.layout.layout_with_merge_as_root, wrapper, true);
return wrapper;
}