如何隐藏片段的动作栏?

use*_*137 31 android android-actionbar

如何隐藏某个片段的操作栏?我在stackoverflow上搜索了答案,但我只找到了一个解决方案,其中包括禁用android清单中主要活动的操作栏.由于我需要为一个片段禁用操作栏,因此这不是一个选项.有任何想法吗?谢谢.

编辑:min API级别为7,sherlock未被使用

Gob*_*ber 54

如果您正在使用AppCompatActivity(您应该),那么这是适用于我的解决方案:

((AppCompatActivity) getActivity()).getSupportActionBar().hide();
Run Code Online (Sandbox Code Playgroud)

您可以在onCreate()中添加它.支持片段的getActivity()返回FragmentActivity,这不包含getSupportActionBar()方法.如果你有AppCompatActivity,只使用getActionBar()会给出空指针异常.

  • 使用.hide()动作栏后消失,但仍然有空格! (4认同)

G g*_*ffo 12

将此代码放在要隐藏工具栏的片段中...

 @Override
public void onResume() {
    super.onResume();
    ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
}
@Override
public void onStop() {
    super.onStop();
    ((AppCompatActivity)getActivity()).getSupportActionBar().show();
}
Run Code Online (Sandbox Code Playgroud)


mic*_*zuk 8

getActionBar().hide()getSupportActionBar().hide()(如果使用ActionBarCompat v7 lib).问候

  • .getActivity()getActionBar()隐藏(); (3认同)

Mag*_* 14 7

放在包含片段的Activity getSupportActionBar().hide()之前setContentView.

另外添加:((AppCompatActivity) getActivity()).getSupportActionBar().hide()在膨胀布局之前的片段中.如果你正在使用ActionBarActivity它,这也有效.它还可以隐藏隐藏操作栏中的滞后


小智 7

正如已经提到的,操作栏可能会被(requireActivity() as AppCompatActivity).supportActionBar?.hide()调用隐藏。如果您想在某些片段中显示它并将其隐藏在其他一些片段中,则在onViewCreatedBase 片段中应用默认(针对您的情况)可见性可能会很方便:

abstract class BaseFragment : Fragment() {
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        (requireActivity() as AppCompatActivity).supportActionBar?.show()
    }
}
Run Code Online (Sandbox Code Playgroud)

并将其隐藏在特定片段中:

class HiddenActionBarFragment : BaseFragment() {
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        (requireActivity() as AppCompatActivity).supportActionBar?.hide()
    }
}
Run Code Online (Sandbox Code Playgroud)

此解决方案比使用更灵活onStart-onStop用于可见性更改,因为在转换期间,onStart不同片段将比onStop当前片段更早地被调用。因此,下一个片段将无法“覆盖”应用于onStop当前片段的动作可见性。


eng*_*ico 6

在所需片段中使用此隐藏actionBar.

getActivity().getSupportActionBar().hide();
Run Code Online (Sandbox Code Playgroud)

并在下一个片段中显示actionBar.

getActivity().getActionBar().show();
Run Code Online (Sandbox Code Playgroud)


Ari*_*han 5

你可以简单地把它放到你的Fragment类createView方法中: -

    View layout = inflater.inflate(R.layout.player_fragment, container, false);
    ((AppCompatActivity) getActivity()).getSupportActionBar().hide();
Run Code Online (Sandbox Code Playgroud)


小智 5

在将布局膨胀到 SHOW Action Bar 之前将代码粘贴到片段中 ` //Kotlin 语句

(activity as AppCompatActivity?)!!.supportActionBar!!.show()
Run Code Online (Sandbox Code Playgroud)

在将布局展开以隐藏操作栏之前将代码粘贴到片段中 ` //Kotlin 语句

(activity as AppCompatActivity?)!!.supportActionBar!!.hide()
Run Code Online (Sandbox Code Playgroud)

这对我来说效果很好。


Jus*_*ler 1

您是否尝试过getActivity().getSupportActionBar().hide()onCreate()希望 ActionBar 隐藏的片段中进行操作?

我假设您没有使用ActionBarSherlock.