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()会给出空指针异常.
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)
getActionBar().hide()或getSupportActionBar().hide()(如果使用ActionBarCompat v7 lib).问候
放在包含片段的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当前片段的动作可见性。
在所需片段中使用此隐藏actionBar.
getActivity().getSupportActionBar().hide();
Run Code Online (Sandbox Code Playgroud)
并在下一个片段中显示actionBar.
getActivity().getActionBar().show();
Run Code Online (Sandbox Code Playgroud)
你可以简单地把它放到你的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)
这对我来说效果很好。
您是否尝试过getActivity().getSupportActionBar().hide()在onCreate()希望 ActionBar 隐藏的片段中进行操作?
我假设您没有使用ActionBarSherlock.
| 归档时间: |
|
| 查看次数: |
42764 次 |
| 最近记录: |