gpt4 book ai didi

android - 将 child 添加到 NavigationView 组内的 MenuItem

转载 作者:太空宇宙 更新时间:2023-11-03 10:36:27 27 4
gpt4 key购买 nike

我已经检查了一些问题,但没有一个能真正回答我正在寻找的问题。

基本上,我试图将一个子项添加到一个父项,或者在横向面板中模拟一棵选项树,就像 Google Play 应用所做的那样:

enter image description here

我在我的 XML 文件中试过这个作为测试:

<group android:checkableBehavior="single">
<item
android:orderInCategory="0"
android:id="@+id/nav_back"
android:icon="@drawable/ic_arrow_back_black_24dp"
android:title="Regresar a la pagina principal"
/>
</group>

<group android:checkableBehavior="single"
android:id="@+id/groupTypes">
<item
android:orderInCategory="1"
android:id="@+id/nav_negocios"
android:icon="@drawable/ic_local_convenience_store_black_48dp"
android:title="@string/negocios" />
<item
android:orderInCategory="1"
android:id="@+id/nav_hoteles"
android:icon="@drawable/ic_local_hotel_black_48dp"
android:title="@string/hoteles" />
<item
android:orderInCategory="1"
android:id="@+id/nav_bares"
android:icon="@drawable/ic_local_bar_black_48dp"
android:title="@string/bares">

<menu>
<item
android:orderInCategory="1"
android:id="@+id/nav_barType1"
android:icon="@drawable/ic_local_bar_black_48dp"
android:title="@string/restaurant" />
</menu>

</item>

<item
android:orderInCategory="1"
android:id="@+id/nav_restaurant"
android:icon="@drawable/ic_restaurant_black_48dp"
android:title="@string/restaurant" />
<item
android:orderInCategory="1"
android:id="@+id/nav_destacado"
android:icon="@drawable/ic_stars_black_48dp"
android:title="@string/destacado" />
</group>

<group android:title="@string/grupo2">
<menu>
<item
android:id="@+id/nav_taxi"
android:orderInCategory="2"
android:icon="@drawable/ic_local_taxi_black_48dp"
android:title="@string/mobility" />

</menu>
</group>

这就是我得到的:

enter image description here

“裸体”项目已更改为类别,其中的项目只是作为组中的原始序列添加。

我也尝试使用 android:menuCategory="container"android:menuCategory="secondary" 选项,但结果是一样的。

<item
android:orderInCategory="1"
android:id="@+id/nav_bares"
android:menuCategory="container"
android:icon="@drawable/ic_local_bar_black_48dp"
android:title="@string/bares">

<menu>
<item
android:orderInCategory="1"
android:id="@+id/nav_barType1"
android:menuCategory="secondary"
android:icon="@drawable/ic_local_bar_black_48dp"
android:title="@string/restaurant" />
</menu>

</item>

有什么建议吗?

最佳答案

我在源代码中找不到这样的 API。我反编译了 Play Store apk file (版本 7.7.17.O)与 androidtool .

主.xml

<com.google.android.finsky.layout.play.FinskyDrawerLayout>
<com.google.android.finsky.layout.InsetsFrameLayout>
</com.google.android.finsky.layout.InsetsFrameLayout>
<include layout="@layout/play_drawer_container" />
</com.google.android.finsky.layout.play.FinskyDrawerLayout>

play_drawer_container.xml

<LinearLayout>
<ListView android:id="@id/play_drawer_list" style="@style/PlayDrawerList" />
<TextView android:id="@id/play_drawer_docked_action" android:visibility="gone" style="@style/PlayDrawerDockedAction" />
</LinearLayout>

如您所见,菜单项不是通过 app:menu 设置的。它只是一个 ListView

打开“显示布局边界”时,您还可以看到 View 边界的差异:

enter image description here

enter image description here

如果他们使用了默认的 menu 项,您应该已经看到边界匹配。

所以,回答你的问题:它可以用自定义方法实现,菜单没有这样的功能。

更新

有很多方法可以实现这种功能:

  1. 使用RecyclerView
  2. 使用ListView
  3. 使用 ScrollView

如果列表中的项目很少,不需要回收功能,那么您可以坚持使用 ScrollView。否则,首选 RecyclerViewListView,其中每个项目都有自己的行项目 xml。

关于android - 将 child 添加到 NavigationView 组内的 MenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43377451/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com