如何仅从一个片段显示自定义操作栏视图

How to show a custom actionbar view from one fragment only

我的应用程序要求仅从一个片段(着陆页片段)显示自定义操作栏视图。问题是当用户导航到其他片段时会出现此操作栏。有没有办法在不禁用每个片段的自定义视图的情况下执行此操作?

谢谢

好吧,我只是想建议一下。为什么不删除所有片段的操作栏,而只创建一个带有自定义操作栏的布局的片段(登录页面)?

要删除所有片段的 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>

对于这个问题,只显示一个片段的操作栏而不显示在所有其他片段上,解决方案可能很简单:

在托管您的片段的 activity 中:

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

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

    ... ...
}

然后在要显示操作栏的片段中:

@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
}

}