我有一个问题,我不知道如何解决。你如何隐藏特定片段中的工具栏,我已经在互联网上搜索,我发现的是通信活动和片段将解决它。但它根本不适用于我,这是我的代码:
main_activity:
public class MainActivity extends ActionBarActivity implements like_frag.OnHideToolbar{
....
public void onHidingToolbar(int position){
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
if(toolbar == null){
getSupportActionBar().hide();
}else{
getSupportActionBar().hide();
}
}
like_frag.java
public class like_frag extends Fragment {
OnHideToolbar mCallback;
Toolbar toolbar;
public interface OnHideToolbar {
public void onHidingToolbar(int position);
}
public void onAttach(Activity activity){
try{
mCallback = (OnHideToolbar) activity;
}catch(ClassCastException e){
throw new ClassCastException(activity.toString() + "error implementing");
}
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View rootView = inflater.inflate(R.layout.swipefrag, container, false);
toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar);
return rootView;
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
}
提前感谢。
我的工具栏里面有一个抽屉。
答案 0 :(得分:65)
将此代码放在要隐藏工具栏的片段中......
@Override
public void onResume() {
super.onResume();
((AppCompatActivity)getActivity()).getSupportActionBar().hide();
}
@Override
public void onStop() {
super.onStop();
((AppCompatActivity)getActivity()).getSupportActionBar().show();
}
答案 1 :(得分:27)
在片段的onCreate
方法调用中:
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
将AppCompateActivity
替换为您使用的活动类。
答案 2 :(得分:8)
在片段中创建一个接口,并使用它来告诉父活动隐藏工具栏。
将这些行添加到您的片段中:
private OnEventListener listener;
public interface OnEventListener {
void hideToolbar() ;
}
public void setOnEventListener(OnEventListener listener) {
this.listener = listener;
}
在主要活动中创建片段后添加:
myFragment.setOnEventListener(new MyFragment.OnEventListener() {
@Override
public void hideToolbar() {
getSupportActionBar().hide();
}
});
每当你需要隐藏工具栏时执行:
listener.hideToolbar();
来自你的片段。
答案 3 :(得分:6)
如果您使用的是新的Navigationa Component
,请在设置工具栏的地方写上此文字
navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
@Override
public void onDestinationChanged(@NonNull NavController controller,
@NonNull NavDestination destination, @Nullable Bundle arguments) {
if(destination.getId() == R.id.full_screen_destination) {
toolbar.setVisibility(View.GONE);
bottomNavigationView.setVisibility(View.GONE);
} else {
toolbar.setVisibility(View.VISIBLE);
bottomNavigationView.setVisibility(View.VISIBLE);
}
}
});
答案 4 :(得分:3)
只需将这些方法添加到您要对工具栏进行广告调整的片段中,也可以在片段onStop()
中将其再次显示。
@Override
public void onResume() {
super.onResume();
((AppCompatActivity)getActivity()).getSupportActionBar().hide();
}
@Override
public void onStop() {
super.onStop();
((AppCompatActivity)getActivity()).getSupportActionBar().show();
}
答案 5 :(得分:3)
只需使用 supportActionBar?.hide()
或 supportActionBar?.show()
。
如果您使用的是 NavigationController:
navController.addOnDestinationChangedListener { controller, destination, arguments ->
if (destination.id == R.id.loginSuccessFragment) {
supportActionBar?.hide()
} else {
supportActionBar?.show()
}
}
答案 6 :(得分:1)
将此代码放在要隐藏工具栏的片段中
在onCreateView或onResume中添加this(((AppCompatActivity)getActivity())。getSupportActionBar()。hide();)。
并在onDestroy()
中执行此操作@Override
public void onDestroy() {
super.onDestroy();
((AppCompatActivity)getActivity()).getSupportActionBar().show();}
答案 7 :(得分:1)
在科特林隐藏和显示supportActionBar
中,如下所示:
override fun onResume() {
super.onResume()
(activity as AppCompatActivity).supportActionBar?.hide()
}
override fun onStop() {
super.onStop()
(activity as AppCompatActivity).supportActionBar?.show()
}
,如果您想拥有自己的自定义工具栏,请在OncreateView
中进行设置:
//your Custom toolbar in xml
val toolbar = binding.toolbar
(activity as AppCompatActivity).setSupportActionBar(toolbar)
答案 8 :(得分:0)
在lifeCycle方法中使用shell=True
和getSupportActionBar().hide();