Создание собственного виджета с включенными другими виджетами
Я довольно новичок в разработке для 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
, завышайте свои взгляды, устанавливайте параметры.
Учебник здесь