Android 自定义SupportActionBar在重新显示后看起来不同
我正在尝试构建单个活动应用程序,并在我的Android 自定义SupportActionBar在重新显示后看起来不同,android,android-fragments,android-toolbar,Android,Android Fragments,Android Toolbar,我正在尝试构建单个活动应用程序,并在我的活动中使用自定义SupportActionBar。其他视图都是片段 我的自定义SupportActionBar如下所示: 现在我有一个例子,我必须在片段中以全屏模式显示视频。因此,我只是调用SupportActionBar的隐藏函数: override fun onResume() { super.onResume() (activity as MainActivity).supportActionBar!!.hide()} 这很好,但是当我想在视频
活动中使用自定义SupportActionBar
。其他视图都是片段
我的自定义SupportActionBar
如下所示:
现在我有一个例子,我必须在片段中以全屏模式显示视频。因此,我只是调用SupportActionBar
的隐藏函数:
override fun onResume() {
super.onResume()
(activity as MainActivity).supportActionBar!!.hide()}
这很好,但是当我想在视频结束后再次显示该条时,该条看起来就不一样了
在我的Fragment
中,我从SupportActionBar
调用show函数,并调用MainActivity
的initToolbar函数:
override fun onStop() {
super.onStop()
(activity as MainActivity).supportActionBar!!.show()
(activity as MainActivity).initToolbar()
}
fun initToolbar() {
setSupportActionBar(toolbar_all_custombar)
supportActionBar!!.setDisplayShowTitleEnabled(false)
supportActionBar!!.setIcon(R.drawable.ic_launcher)
}
下面是我的活动
中的initToolbar方法:
override fun onStop() {
super.onStop()
(activity as MainActivity).supportActionBar!!.show()
(activity as MainActivity).initToolbar()
}
fun initToolbar() {
setSupportActionBar(toolbar_all_custombar)
supportActionBar!!.setDisplayShowTitleEnabled(false)
supportActionBar!!.setIcon(R.drawable.ic_launcher)
}
工具栏布局:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar_all_custombar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:fitsSystemWindows="true"
android:minHeight="?attr/actionBarSize"
app:titleTextAppearance="@style/AppTheme.TitleTextStyle"
app:titleTextColor="@color/textColorPrimary">
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/all_toolbar_title"
android:textColor="@android:color/white"
android:textStyle="bold|italic"/>
</android.support.v7.widget.Toolbar>
我不明白为什么我的酒吧在再次展示后看起来不一样。
这种行为的原因是什么 在TextView上添加一些填充或边距(底部),尝试一次 使用
而不是supportActionBar!!。隐藏()
隐藏():如果承载ActionBar的窗口没有该功能,它将调整应用程序内容的大小以适应新的可用空间
设置系统兼容性():通过此系统UI标志隐藏ActionBar可使您与其他屏幕装饰一起更无缝地隐藏它。再次显示SupportActionBar后,您可以尝试调用(activity as MainActivity)。SupportActionBar.invalidate()代码>以重新绘制其中的所有视图。这将导致您的supportActionBar被正确地重新绘制。您可以在想要隐藏supportToolBar时将其设置为null,然后在想要显示它时恢复以前的值
这是经过测试的,在我的情况下有效。谢谢您的帮助!
我终于解决了。问题是我使用了一些视图
标志来实现相应片段
中的全屏模式。因此,我删除了此片段中的以下函数:
private fun hideSystemUiFullScreen() {
exoplayer_videoview_container!!.systemUiVisibility = (View.SYSTEM_UI_FLAG_LOW_PROFILE
or View.SYSTEM_UI_FLAG_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
}
我没有改变我的onResume
和onStop
方法。因此,问题只是使用视图
标志来获得全屏模式。您是否尝试过.setVisibility(View.GONE);和.setVisibility(View.VISIBLE);而不是函数显示和隐藏?