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