2015-01-21 72 views
0

我对我的应用程序要求仅从一个片段(着陆页片段)显示自定义操作栏视图。问题是当用户导航到其他片段时,此操作栏出现。有没有办法做到这一点,而不禁用每个片段的自定义视图?如何仅显示一个片段的自定义操作栏视图

谢谢

+0

使用“getActivity()getActionbar() .hide()'在导航到您不想显示的片段时隐藏操作栏。 – Xcihnegn 2015-01-21 08:11:04

+0

但我必须在除着陆页片段之外的所有片段中写入此内容。我确定有更好的方法。 – 2015-01-21 08:15:32

+0

仅用于登陆片段,请在onDetach中使用''getActivity()。getActionbar()。show()''和''getActivity()。getActionbar()。hide()''。 – Xcihnegn 2015-01-21 08:45:22

回答

1

对于这个问题,只显示一个片段的操作栏而不显示所有其他片段,解决方案可能非常简单:

在你的活动承载您的片段:

@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 
} 

}

+0

完美的工作! – 2015-01-24 09:28:25

0

嗯,我只是想建议。为什么不去除所有片段的操作栏,并通过布局创建一个带有自定义操作栏的单个片段(着陆页)?

要删除动作条的所有片段,添加以下代码标记:

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> 

相关问题