#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 оболочки.