【问题标题】:Adding new components in side drawer navigator dynamically在侧抽屉导航器中动态添加新组件
【发布时间】:2020-06-04 07:52:24
【问题描述】:

我有一个“添加”按钮,当按下该按钮时,应将新项目添加到侧面导航抽屉。我的抽屉里已经有两件物品,并且每次按下“添加”按钮时都想添加一件物品。我该怎么做?

【问题讨论】:

标签: android react-native react-native-navigation use-state react-navigation-drawer


【解决方案1】:

首先为您希望导航抽屉看起来像这样创建一个 nav_view: nav_drawer.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
        <include
                android:id="@+id/header"
                layout="@layout/your_nav_header"
                android:layout_width="match_parent"
                android:layout_height="176dp"/>

        <ScrollView
                android:id="@+id/scrollView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_above="@+id/tvVersion"
                android:layout_below="@+id/header">

            <LinearLayout
                    android:id="@+id/dynamically_added_items"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:gravity="right"
                    android:orientation="vertical"/>

        </ScrollView>
    </RelativeLayout>

那么在你看来:

val li = LayoutInflater.from(context)
val mainView = li.inflate(R.layout.nav_drawer, null)
val linearLayout = mainView.findViewById<LinearLayout>(R.id.dynamically_added_items)

items.forEach {
    val navItem = MyNavigationItem(li)
    linearLayout.addView(navItem.getView())
}

哪些项目是您要添加到抽屉中的项目列表,这可以是一个列表或只是一个项目,如下所示:

val navItem = MyNavigationItem(li)
linearLayout.addView(navItem.getView())

其中 MyNavigationItem 是一个用于设置抽屉中每个项目的视图的类:

class NavigationItemWidget(
    item: MyItem,
    li: LayoutInflater
) {

    private val mainView = li.inflate(R.layout.item_nav, null)

    fun getView(): View {
        mainView.setOnClickListener {

        }
    }

}

在上述类中,通过 getView() 函数为您的自定义 item_nav 布局设置视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多