Отдельная активность и несколько фрагментов с различными макетами панели инструментов - PullRequest
0 голосов
/ 23 ноября 2018

В моем приложении есть приложение с архитектурой с несколькими фрагментами Single Activity.Проблема в том, что есть один фрагмент списка с нормальной панелью инструментов, здесь пользователь может щелкнуть и перейти к экрану сведений.Теперь на экране «Подробности» я хочу, чтобы действие стало полноэкранным с помощью CoordinatorLayout и сворачивающейся панели инструментов с областью StatusBar, покрытой в макете как прозрачная.И когда пользователь возвращается к списку экранов.Активность должна отключить полноэкранный режим и снова получить цвет StatusBar.

Проблема здесь в том, что я устанавливаю активность как полноэкранный, используя следующий код:

window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

И когдапользователь возвращается, я отключаю полноэкранный режим с помощью следующего кода:

window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE

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

Спасибо завперед.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Я бы рекомендовал использовать

android:theme="@style/AppTheme.NoActionBar" для вашей деятельности.

и в вашем XML activity встроить пользовательскую панель инструментов

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar_top"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="@color/action_bar_bkgnd"
    app:theme="@style/ToolBarTheme" >


     <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Toolbar Title"
        android:layout_gravity="center"
        android:id="@+id/toolbar_title" />


    </android.support.v7.widget.Toolbar>

и в вашу деятельностькласс

Toolbar toolbarTop = (Toolbar) findViewById(R.id.toolbar_top);
TextView mTitle = (TextView) toolbarTop.findViewById(R.id.toolbar_title);

Теперь для вашего fragments все, что вам нужно сделать, это показать или скрыть это toolbar, зависит от fragment, который вы хотите от того же или другого toolbar, и выможет сделать это с OnResume и OnPause из фрагментов.

0 голосов
/ 23 ноября 2018

Попробуйте это в своей DetailsActivity -

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // remove title
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.main);
}
...