问题描述
我必须知道在 Fragments 中隐藏或显示 Action Bar 的最佳方法。我发现它与我可以在 Manifest 中应用样式的 Activity 不同。 我曾尝试在 Fragment XML 文件中应用该样式,但没有任何效果。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".PreviewFragment"
**style="@style/MyStyleHereNoActionBar"**>
</FrameLayout>
另一个有效但可能不稳定的选项是:
class PreviewFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
}
}
override fun onCreateView(
inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
// hide action bar (requireActivity() as AppCompatActivity).supportActionBar?.hide()
// show action bar (requireActivity() as AppCompatActivity).supportActionBar?.show()
return inflater.inflate(R.layout.fragment_preview,container,false)
}
override fun onResume() {
super.onResume()
(activity as AppCompatActivity?)!!.supportActionBar!!.hide()
}
override fun onStop() {
super.onStop()
(activity as AppCompatActivity?)!!.supportActionBar!!.show()
}
所以我很想知道我可以做得更好或其他方式。或者更确切地说是正确的方法。
其次是如何以正确的方式将自定义样式应用于 Fragments。
谢谢。
解决方法
您正在活动中添加片段,并且活动具有操作栏。因此,在您想要显示操作栏的特定片段中获取活动并显示活动,并将其隐藏在您不想显示的地方。
或者,如果您想在片段内使用操作栏,那么只需在高度为 "?android:attr/actionBarSize"
的片段顶部添加线性布局。我认为这应该可以完成工作。