删除片段中的ActionBar

时间:2017-08-10 05:09:31

标签: android android-fragments android-actionbar android-toolbar

我在尝试删除特定片段中的工具栏时遇到了一些麻烦,我在onCreateView片段方法中有这个代码:

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_login,container,false);
    mValidator = new Validator(this);
    mValidator.setValidationListener(this);
    mFbHelper = new 
    mGHelper = new GoogleHelper(this, null, this);

    ((DrawerUtil) getActivity()).setDrawerLocked(true);
    ((AppCompatActivity) getActivity()).getSupportActionBar().hide();
    initViews(view);
    return view;
}

我可以隐藏ActionBar,但我的想法是删除ActionBar以正确使用徽标,我使用此代码:((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(state); 但它不起作用。enter image description here 有什么想法吗?

7 个答案:

答案 0 :(得分:2)

试试这个

private HomeActivity csActivity;

csActivity      = (HomeActivity)getActivity();
csActivity.getSupportActionBar().hide();

答案 1 :(得分:1)

对于您的登录活动,请使用

<style name="BaseTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
   <item name="windowNoTitle">true</item>
   <item name="windowActionBar">false</item>
</style>

这将删除android提供的默认ActionBar。将您的片段附加到此活动,片段中也没有操作栏。

对于其他活动,如果您需要ActionBar,可以使用相同的主题并将工具栏添加为actionBar。

如果您不希望ActionBar使用主题

parent="@style/Theme.AppCompat.Light.NoActionBar"

如果你想让ActionBar使用主题

parent="@style/Theme.AppCompat.Light.DarkActionBar" or

parent="@style/Theme.AppCompat.Dark.LightActionBar"

如果您使用浅色或深色ActionBar主题,您将获得默认的ActionBar.Again如果您想要隐藏它,您可以这样做

getActivity().getSupportActionBar().hide();    // in Fragment

getSupportActionBar().hide();                  // in Activity 

答案 2 :(得分:0)

加载片段的活动,请尝试使用java文件中的代码;

 ActionBar actionBar = getSupportActionBar();
 actionBar.hide();

并从Menifest .xml

中删除以下行
 android:theme="@style/AppTheme.NoActionBar"

答案 3 :(得分:0)

你可以从xml文件中删除它,检查你的活动代码加载片段的位置,如果加载了这个片段而不是toolbar.setvisibility,那么就在那里进行更改

答案 4 :(得分:0)

可能有点晚了,但这可能会节省下一个OP几分钟的搜索时间。这对我来说对@Johan Sanchez有用。假设您已在清单中将主题声明为NoActionBar,但仍留有空白,则可能是您的XML文件..

在我的main_activity.xml文件中是一个片段占位符,它将被相应的片段xml文件替换......里面是layout_margintop属性。删除它

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="simiyu.com.smallheaven.MainActivity">
<FrameLayout
    android:id="@+id/flContent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="?attr/actionBarSize"/>

</android.support.design.widget.CoordinatorLayout>

结果应为

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="simiyu.com.smallheaven.MainActivity">
<FrameLayout
    android:id="@+id/flContent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="?attr/actionBarSize"/>

</android.support.design.widget.CoordinatorLayout>
enter code here

答案 5 :(得分:0)

对于Kotlin, 使用

import android.support.v7.app.AppCompatActivity

尝试

 override fun onStart() {
        super.onStart()
        //hide action bar from splash screen
        (activity as AppCompatActivity).supportActionBar!!.hide()
 }

在特定片段中,和

            supportActionBar!!.hide()

活动中的

注意:当您希望再次显示ActionBar时,请不要忘记将“ hide()”替换为“ show()”。

答案 6 :(得分:0)

对于特定片段,您可以使用:

override fun onStart() {
        super.onStart()
        (activity as AppCompatActivity).supportActionBar!!.hide()
    }

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


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