我已经检查了一些问题,但没有人真正回答我正在寻找的问题。
基本上我尝试将项目子项添加到项目父项,或者在横向面板中模拟选项树,类似于Google Play应用程序:
我在我的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>
这就是我得到的:
&#34; Bares&#34; item已更改为某个类别,其中的项目只是作为组中的原始序列添加。
此外,我尝试使用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>
有什么建议吗?
答案 0 :(得分:1)
我在源代码中找不到这样的API。我用apk file反编译Play商店androidtool(版本7.7.17.O)。
<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>
<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
。
当打开“显示布局边界”时,您还可以看到视图边界的差异:
如果他们使用了默认的menu
项,您应该看到边界匹配。
所以,回答你的问题:它可以用自定义方法实现,菜单没有这样的功能。
<强>更新强>
有许多方法可以实现这种功能:
RecyclerView
ListView
ScrollView
如果列表中的项目很少,则不需要回收功能,而是可以坚持使用ScrollView
。否则,请选择RecyclerView
或ListView
,其中每个项目都有自己的行项目xml。
答案 1 :(得分:0)
您需要使用菜单包围您的项目,然后在其下方添加子菜单。它可能看起来像这样:
<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">
<menu>
<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" />
</menu>
</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>
答案 2 :(得分:0)
您可以尝试使用下拉菜单或可展开列表或简单列表,这些列表可以在导航抽屉而不是组中单击菜单选项时看到。
答案 3 :(得分:0)
对于您的第一种方法,您可以进行一些编辑。 SubItem也是一个项目,而不是将所有内容都放在一个项目中。请尝试以下示例:
<item
android:id="@+id/nav_category_electronics"
android:icon="@drawable/ic_email_black_24dp"
android:title="Electronics">
<menu>
<item
android:id="@+id/nav_subcategory_laptops"
android:icon="@drawable/laptop"
android:title="Laptops" />
<item
android:id="@+id/nav_subcategory_tablet"
android:icon="@drawable/tablet3"
android:title="Tablets" />
<item
android:id="@+id/nav_category_phones"
android:icon="@drawable/smartphone"
android:title="Mobile Phones" />
<item
android:id="@+id/nav_subcategory_gadgets"
android:icon="@drawable/ic_developer_mode_black_18dp"
android:title="Gadgets" />
</menu>
</item>