【问题标题】:Remove ActionBar in fragment删除片段中的 ActionBar
【发布时间】:2017-08-10 05:09:31
【问题描述】:

我在尝试删除特定片段中的工具栏时遇到了一些麻烦,我在 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); 但它不起作用。 有什么想法吗?

【问题讨论】:

  • 是的,但在特定的片段中
  • 检查我编辑的答案.....

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


【解决方案1】:

这样试试

private HomeActivity csActivity;

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

【讨论】:

  • 其实我可以隐藏actionbar,想法是把它从特定的fragment中去掉
  • 两者有什么区别
  • 删除一个可以添加其他自定义
【解决方案2】:

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

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()
    }

【讨论】:

  • 最佳答案。这会显示和隐藏特定 Fragment 的操作栏。
【解决方案3】:

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

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

这将删除android提供的默认ActionBar。所以将你的片段附加到这个活动中,你的片段中也不会有动作栏。

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

如果你不想 ActionBar 使用主题

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

如果你想要 ActionBar 使用主题

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

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

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

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

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

【讨论】:

    【解决方案4】:

    对于科特林, 使用

    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()”。

    【讨论】:

      【解决方案5】:

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

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

      并从 Menifest .xml 中删除以下行

       android:theme="@style/AppTheme.NoActionBar"
      

      【讨论】:

      • 不,其实我在Manifest文件中有这个NoActionBar,也是一个片段
      • 我改了答案..试试看
      • 我认为这样做的问题是,如果您有多个片段,它也不会显示给所有这些片段。
      【解决方案6】:

      您可以将其从 xml 文件中删除,检查片段加载的活动代码,并在该片段加载时进行更改而不是工具栏.setvisibility 消失

      【讨论】:

      • 我没有在 fragment_login.xml 中调用 getSupportActionBar
      • 发布您从中加载片段的活动代码
      • 不需要,你想在所有片段中做吗?或者只有一个
      • 只有一个@jigar savaliya
      • 只有一个@jigar savaliya
      【解决方案7】:

      可能有点晚了,但这可能会为下一个 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
      

      【讨论】:

        猜你喜欢
        • 2016-06-25
        • 1970-01-01
        • 1970-01-01
        • 2019-03-17
        • 1970-01-01
        • 2012-08-08
        • 1970-01-01
        • 2016-03-12
        • 2015-10-21
        相关资源
        最近更新 更多