Как правильно сделать многоразовый xml макет для моих фрагментов? - PullRequest
0 голосов
/ 06 апреля 2020

так что у меня есть 5 разных фрагментов, которые будут иметь 5 разных бизнес логи c. но эти 5 фрагментов фактически имеют одно и то же представление / виджет. каждый фрагмент имеет только вид переработчика и индикатор выполнения. и я хочу сделать это проще, и я хочу избежать создания файла 5 xml, и каждый файл xml содержит представление рециркулятора и индикатор выполнения.

У меня есть 2 подхода.

Первый подход. Я делаю файл xml, назовем его widgets.xml, который будет содержать вид рециркулятора и индикатор выполнения. и тогда я включу widgets.xml во все 5 фрагментов макета xml. поэтому у меня все еще будет 5 макетов xml для каждого фрагмента, но xml прост, как этот

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/constraintLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragments.BFragment" >

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

</androidx.constraintlayout.widget.ConstraintLayout>

второй подход. Я делаю только один xml, который будет использоваться для всех моих 5 фрагментов. поэтому я просто изменяю компоновку в inflate в представлении onCreate

override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        setUpRemoteConfigDataForThisFragment()

        return inflater.inflate(R.layout.fragment_reusable, container, false)
    }

, какой из них лучше? или это лучший подход?

Я склонен выбирать второй подход, но меня беспокоит атрибут компоновки ограничения tools:context (root). если я просто сделаю один, то у меня будет только один контекст для всех моих фрагментов. это нормально?

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/constraintLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragments.BFragment" > <---- I mean this context

   // child views here

</androidx.constraintlayout.widget.ConstraintLayout>

1 Ответ

0 голосов
/ 06 апреля 2020

создайте только один xml с recyclerView и индикатором выполнения, а затем увеличьте количество фрагментов до нужного. это не создаст никакой путаницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...