2015-01-21 4 views
0

У меня есть требование для моего приложения, чтобы представление пользовательской панели действий отображалось только из одного фрагмента (фрагмент целевой страницы). Проблема в том, что эта панель действий появляется, когда пользователь переходит к другим фрагментам. Есть ли способ сделать это без отключения пользовательского представления для каждого фрагмента?Как показать пользовательский вид панели действий только из одного фрагмента

Thanks

+0

использование «getActivity() getActionbar() .hide() ', чтобы скрыть панель действий при наложении на фрагмент, который вы не хотите показывать. – Xcihnegn

+0

Но я должен был бы написать это во всех фрагментах, кроме фрагмента целевой страницы. Я уверен, что есть лучший способ. –

+0

Только для фрагмента посадки используйте '' getActivity(). GetActionbar(). Show() '' в onAttach и '' getActivity(). GetActionbar(). Hide() '' в onDetach. – Xcihnegn

ответ

1

Для этой проблемы только показывать панель действий для одного фрагмента без показа на всех других фрагментах, решение может быть очень простым:

В вашей деятельности, которая проводит свои фрагменты:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... ... 

    // for API >= 11 
    getActionBar.hide(); 
    // for API < 11 
    getSupportActionBar().hide(); 

    ... ... 
} 

Затем в отрывке, который вы хотите показать ActionBar:.

@Override 
public void onAttach(Activity activity){ 
    activity.getActionBar().show(); //getSupportActionBar() for API<11 

} 

@Override 
public void onHiddenChanged(boolean hidden) { 
    super.onHiddenChanged(hidden); 
    if (hidden) { 
     getActivity().getActionBar().hide(); //getSupportActionBar() for API<11 
    } else { 
     getActivity().getActionBar().show(); //getSupportActionBar() for API<11 
} 

}

+0

Это сработало отлично! –

0

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

Чтобы удалить ActionBar для всех фрагментов, добавьте этот код в тег:

android:theme="@android:style/Theme.Light.NoTitleBar"

Создание макета с панели действий для вашей целевой страницы с помощью XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/rlMain" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:clickable="true" > 

<RelativeLayout 
    android:id="@+id/rlHeaderMain" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentTop="true" 
    android:background="#000000" 
    android:clipChildren="false" 
    android:clipToPadding="false" 
    android:padding="5dp" > 


</RelativeLayout> 

Смежные вопросы