Создание собственного виджета с включенными другими виджетами

Я довольно новичок в разработке для Android, и мне трудно найти самый простой способ создания повторно используемого кода. Я нашел довольно много статей в Google, у Android есть много деталей и решений. У меня возникают проблемы с поиском плюсов и минусов, поэтому я просто опубликую то, что я хотел бы сделать, а затем посмотрю, что всплывает.

В настоящее время у меня есть:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <RelativeLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <include
            android:id="@+id/toolbar"
            layout="@layout/widget_toolbar"/>

        <ListView
            android:background="@color/amber_A700"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/toolbar">

        </ListView>

    </RelativeLayout>

    <apps.new.app.ui.widget.ScrimInsetsFrameLayout
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/linearLayout"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#ffffffff"
        android:fitsSystemWindows="true"
        app:insetForeground="#4000" >

        <fragment android:id="@+id/navigation_drawer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:name="com.example.newapp.NavigationDrawerFragment"
            tools:layout="@layout/frag_nav_drawer" />

    </apps.new.app.ui.widget.ScrimInsetsFrameLayout>

</android.support.v4.widget.DrawerLayout>

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

<android.my.custom.widget
    ...
    app:drawerFragment="drawer_fragment_name"
    ...>

    //Listview would go here

</android.my.custom.widget>

Это позволило бы мне установить фрагмент ящика, автоматически включить "ScrimInsetsFrameLayout", автоматически включить панель инструментов. По сути, я хочу многократно используемую библиотеку, в которую я мог бы обновляться, и она могла бы распространяться на любое приложение, в котором я ее использую. Какова лучшая практика с android dev? Если это просто пользовательский виджет, как бы я включил в него другие виджеты и вставил в них фрагменты?

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

Я чувствую, что мне просто не хватает чего-то очевидного.

1 ответ

Вам нужно создать новый класс, который наследует от DrawerLayout, завышайте свои взгляды, устанавливайте параметры.

Учебник здесь

Другие вопросы по тегам