Пользовательский SupportActionBar выглядит иначе после повторного отображения - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь создать приложение для одного занятия и использую пользовательский SupportActionBar в своем Activity. Все остальные виды являются фрагментами.

Мой кастом SupportActionBar выглядит так:

Correct SupportActionBar

Теперь у меня есть случай, когда мне нужно отобразить видео в полноэкранном режиме в Fragment. Поэтому я просто вызываю функцию скрытия SupportActionBar:

override fun onResume() {
super.onResume()
(activity as  MainActivity).supportActionBar!!.hide()}

Это отлично работает, но когда я хочу снова отобразить панель после завершения видео, панель выглядит не так.

Wrong SupportActionBar

В моем Fragment я вызываю функцию show из SupportActionBar и функцию initToolbar MainActivity:

override fun onStop() {
    super.onStop()
    (activity as MainActivity).supportActionBar!!.show()
    (activity as MainActivity).initToolbar()
}

А вот метод initToolbar из моего Activity:

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>

Не понимаю, почему мой бар выглядит по-другому после повторного показа. В чем причина этого поведения?

Ответы [ 6 ]

0 голосов
/ 22 января 2019

Спасибо за вашу помощь! Я наконец решил это. Проблема заключалась в том, что я использовал некоторые View флаги для достижения полноэкранного режима в соответствующем Fragment. Поэтому я удалил следующую функцию в этом Fragment:

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. Поэтому проблема заключалась только в использовании флагов View для получения полноэкранного режима.

0 голосов
/ 22 января 2019

Вы можете удалить эту панель инструментов из своей деятельности и использовать класс BaseFragment, который все фрагменты extends из него и реализует show/hideToolbar в этом BaseFragment, и использовать функцию показать / скрыть, в каком фрагменте вы хотите!

0 голосов
/ 22 января 2019

Вы можете установить supportToolBar как ноль, если вы хотите скрыть его, а затем восстановить предыдущее значение, когда вы хотите показать его.

Это проверено и работает в моем случае.

0 голосов
/ 21 января 2019

После того, как SupportActionBar снова станет видимым, вы можете попробовать вызвать (activity as MainActivity).supportActionBar.invalidate();, чтобы перерисовать все представления в нем. Это должно привести к тому, что ваш supportActionBar будет корректно перерисован.

0 голосов
/ 21 января 2019

Использование setSystemUiVisibility

Вместо supportActionBar !!. Hide ()

скрыть (): если окно, содержащее панель действий, не имеет функции FEATURE_ACTION_BAR_OVERLAY оно изменит размер приложения в соответствии с новым доступным пространством.

setSystemUiVisibility (): скрытие ActionBar через этот системный флаг пользовательского интерфейса позволяет более незаметно скрывать его в сочетании с другими украшениями экрана.

0 голосов
/ 15 января 2019

Попробуйте один раз, поместив несколько отступов или полей (внизу) в TextView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...