How to show a custom actionbar view from one fragment only

后端 未结 2 1695
梦谈多话
梦谈多话 2021-01-24 05:17

I have a requirement for my app that a custom action bar view be shown from one fragment only (the landing page fragment). The problem is that this action bar is appearing when

相关标签:
2条回答
  • 2021-01-24 05:54

    Well, I'm just trying to suggest. Why not removing the action bar to all the fragments and just creating a single fragment (the landing page) with a custom action bar thru layout?

    To remove ActionBar to all fragments, add this code to tag:

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

    Create a Layout with action bar for your landing page through 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>
    

    0 讨论(0)
  • 2021-01-24 05:56

    For this issue, only show actionbar for one fragment without show on all other fragments, solution could be very easy:

    In your activity that hosts your fragments:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ... ...
    
        // for API >= 11
        getActionBar.hide();
        // for API < 11
        getSupportActionBar().hide();
    
        ... ...
    }
    

    Then in the fragment that you want to show 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)
提交回复
热议问题