gpt4 book ai didi

android - NavigationView中的分隔线(在BottomSheetDialogFragment中)未显示?

转载 作者:行者123 更新时间:2023-12-03 10:12:14 25 4
gpt4 key购买 nike

我在BottomSheetDialogFragment中有一个NavigationView。但组菜单之间的分隔线不会出现。
我检查了一些解决方案,例如在这里How to create a simple divider in the new NavigationView?
但这对我不起作用。

nav_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/item1"
android:title="Item 1" />
<item
android:id="@+id/item2"
android:title="Item 2" />

<group
android:id="@+id/group1"
android:checkableBehavior="single">
<item
android:id="@+id/g_item1"
android:title="Group Item 1" />
<item
android:id="@+id/g_item2"
android:title="Group Item 2" />
</group>

<group
android:id="@+id/group2"
android:checkableBehavior="single">
<item
android:id="@+id/g2_item1"
android:title="Group Item 1" />
<item
android:id="@+id/g2_item2"
android:title="Group Item 2" />
</group>

<item android:id="@+id/submenu"
android:title="Sub menu" >
<menu>
<item
android:id="@+id/sub_item1"
android:title="Sub Item 1" />
<item
android:id="@+id/sub_item2"
android:title="Sub Item 2" />
</menu>
</item>
</menu>

fragment_bottom_sheet.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".BottomSheetFragment">

<com.google.android.material.navigation.NavigationView
android:id="@+id/dialogFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:menu="@menu/nav_menu" />
</FrameLayout>

和BottomSheetDialogFragment
public class BottomSheetFragment extends BottomSheetDialogFragment {

View view;
public BottomSheetFragment() {
// Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_bottom_sheet, container, false);
NavigationView navigationView = view.findViewById(R.id.dialogFragment);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
NavController navController = Navigation.findNavController(getActivity(), R.id.navGraph);
dismiss();
return NavigationUI.onNavDestinationSelected(menuItem, navController);
}
});
return view;
}
}

结果在这里

enter image description here

我需要这个结果

enter image description here

编辑:
查看来自Android Studio和AVD的结果

enter image description here

最佳答案

这是预期的行为,因为默认对话框主题中的listDivider为null。
通过将不同的主题应用于NavigationView,可以显示分隔线。

    <com.google.android.material.navigation.NavigationView
android:theme="@style/Theme.MaterialComponents.Light"
android:id="@+id/dialogFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:menu="@menu/nav_menu" />

关于android - NavigationView中的分隔线(在BottomSheetDialogFragment中)未显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58638256/

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