Является ли хорошей практикой вызывать XML из другого XML в Android?

#android #xml #android-studio

#Android #xml #android-studio

Вопрос:

Я новичок в разработке приложений для Android и мне это нравится.

Является ли хорошей практикой вызывать XML из другого XML? Означает ли это экономить время выполнения приложения?

XML 1 (activity_main):

 <fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@ id/fragment"
android:name="com.loginfbk.MainFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout="@layout/fragment_main" />
  

XML 2 (fragment_main):

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:src="@drawable/messenger_button_white_bg_round"/>


</LinearLayout>
  

Комментарии:

1. Зависит от ситуации. Предположим, у вас большой экран или несколько разделов, тогда вы можете создать для этого несколько макетов. В противном случае нет необходимости.

2. tools:... Пространство имен работает только внутри IDE, а не на реальном устройстве. Действительно ли этот код работает?

3. вы можете сделать <include> тег для повторного использования макетов

4. @ElvisChweya этот код выполняется, и я был смущен, глядя.

5. @BDudhraj, может быть, у вас также есть Java-код для подключения FragmentTransaction материала, но вы это упускаете из виду.

Ответ №1:

ДА. Иногда вы хотите повторно использовать представления. Поэтому вместо многократного дублирования строк XML лучший способ — повторно использовать представления XML. Вот почему у нас есть include тег в Android schemas.

 <include layout="@layout/reusable_view" />
  

В нашем случае reusable_view.xml может содержать любое определенное представление, которое будет введено в другое представление.

Ответ №2:

Является ли хорошей практикой вызывать XML из другого XML?

В общем случае НЕТ, в вашем случае ДА.

В общем: если вы планируете повторно использовать везде почти каждый повторно используемый макет и выполняете рефакторинг кода для извлечения общих частей, это нормально, это сработает. Проблема возникает позже. Позже вы передумаете что-то добавить, или у вашего клиента появится блестящая идея. Вы измените его и будете молиться, чтобы не нарушать код в другом месте.

Также некоторые IDE могут показывать вам включенные части, другие нет!

В некоторых случаях вам необходимо динамически включать представления. Например, строка 5 с текстовыми вводами «форма» и «кому», а после этого держатель «кнопки», и если пользователь нажмет на что-то, добавьте / удалите другие, возможно, добавьте текстовую область. В этих неприятных случаях у вас действительно нет выбора: только включенные элементы, изменяющиеся на лету. К счастью, это не общий случай в разработке Android.

За исключением вышеупомянутого случая, я бы использовал компоненты повторно, когда планирую использовать компоненты, которые выглядят одинаково на планшете и телефоне: например, кнопка «Показать лицензии» или для немецких компаний «Отпечаток». в другом случае я бы написал полный xml, потому что на самом деле вам нужно дублировать код максимум 3-5 раз в проекте, и вы можете мгновенно увидеть, что там есть, и мгновенно изменить его, не затрагивая другие макеты, особенно если ваш макет содержит более 1 контроллера 1-2 оболочки.