在碎片Kotlin中隐藏或显示动作栏



我必须知道在碎片中隐藏或显示操作栏的最佳方法。我发现了这一点,与我可以在Manifest中应用样式的"活动"不同。我尝试在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()
}

所以我很想知道我能做得更好的是什么,或者用另一种方法。或者更确切地说是一种正确的方法。

第二,如何以正确的方式将自定义样式应用于片段。

谢谢。

您正在一个活动中添加片段,该活动具有操作栏。因此,在你想显示动作条的特定片段中,获取活动并显示活动,然后将其隐藏在你不想显示的地方。

或者,如果你想在片段中使用动作条,那么只需在片段顶部添加一个高度为"?android:attr/actionBarSize"的线性布局。我认为这应该完成任务。

最新更新