如何仅从一个片段显示自定义操作栏视图
How to show a custom actionbar view from one fragment only
我的应用程序要求仅从一个片段(着陆页片段)显示自定义操作栏视图。问题是当用户导航到其他片段时会出现此操作栏。有没有办法在不禁用每个片段的自定义视图的情况下执行此操作?
谢谢
好吧,我只是想建议一下。为什么不删除所有片段的操作栏,而只创建一个带有自定义操作栏的布局的片段(登录页面)?
要删除所有片段的 ActionBar,请将此代码添加到标记中:
android:theme="@android:style/Theme.Light.NoTitleBar"
通过 xml:
为您的着陆页创建带有操作栏的布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rlMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" >
<RelativeLayout
android:id="@+id/rlHeaderMain"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:background="#000000"
android:clipChildren="false"
android:clipToPadding="false"
android:padding="5dp" >
</RelativeLayout>
对于这个问题,只显示一个片段的操作栏而不显示在所有其他片段上,解决方案可能很简单:
在托管您的片段的 activity 中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
... ...
// for API >= 11
getActionBar.hide();
// for API < 11
getSupportActionBar().hide();
... ...
}
然后在要显示操作栏的片段中:
@Override
public void onAttach(Activity activity){
activity.getActionBar().show(); //getSupportActionBar() for API<11
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (hidden) {
getActivity().getActionBar().hide(); //getSupportActionBar() for API<11
} else {
getActivity().getActionBar().show(); //getSupportActionBar() for API<11
}
}
我的应用程序要求仅从一个片段(着陆页片段)显示自定义操作栏视图。问题是当用户导航到其他片段时会出现此操作栏。有没有办法在不禁用每个片段的自定义视图的情况下执行此操作?
谢谢
好吧,我只是想建议一下。为什么不删除所有片段的操作栏,而只创建一个带有自定义操作栏的布局的片段(登录页面)?
要删除所有片段的 ActionBar,请将此代码添加到标记中:
android:theme="@android:style/Theme.Light.NoTitleBar"
通过 xml:
为您的着陆页创建带有操作栏的布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rlMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" >
<RelativeLayout
android:id="@+id/rlHeaderMain"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:background="#000000"
android:clipChildren="false"
android:clipToPadding="false"
android:padding="5dp" >
</RelativeLayout>
对于这个问题,只显示一个片段的操作栏而不显示在所有其他片段上,解决方案可能很简单:
在托管您的片段的 activity 中:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
... ...
// for API >= 11
getActionBar.hide();
// for API < 11
getSupportActionBar().hide();
... ...
}
然后在要显示操作栏的片段中:
@Override
public void onAttach(Activity activity){
activity.getActionBar().show(); //getSupportActionBar() for API<11
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (hidden) {
getActivity().getActionBar().hide(); //getSupportActionBar() for API<11
} else {
getActivity().getActionBar().show(); //getSupportActionBar() for API<11
}
}