在我的 Galaxy Tab 10.1 上的日历应用程序中,当创建一个新事件时,会在标题栏/操作栏区域出现一个对话框,其中包含完成和取消按钮。
我想在我的应用中实现这一点。除了在我的 DialogFragment
子类中覆盖 onCreateOptionsMenu
之外,我还尝试使用 setHasOptionsMenu(true)
,但我的操作项没有出现。我也试过从 onCreateView
中调用 getDialog().getActionBar()
但它总是返回 null
。
如果我启动一个 Activity
而不是显示一个对话框,但它会占据整个屏幕,我就可以让它工作。有没有使用 DialogFragment
的标准方法?
最佳答案
使用来自 google group post 的想法我能够把它从造型 Activity 中拉出来。您最好将高度和宽度修改为您选择的“动态”大小。然后设置你想要的任何 ActionBar 按钮
<style name="PopupTheme" parent="android:Theme.Holo.Light.Dialog">
<item name="android:windowIsFloating">false</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowSoftInputMode">stateAlwaysHidden</item>
<item name="android:windowActionModeOverlay">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
--
public static void showAsPopup(Activity activity) {
//To show activity as dialog and dim the background, you need to declare android:theme="@style/PopupTheme" on for the chosen activity on the manifest
activity.requestWindowFeature(Window.FEATURE_ACTION_BAR);
activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND,
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
LayoutParams params = activity.getWindow().getAttributes();
params.height = 850; //fixed height
params.width = 850; //fixed width
params.alpha = 1.0f;
params.dimAmount = 0.5f;
activity.getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
setContentView(R.layout.activity_main);
}
关于android - DialogFragment 中的 ActionBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11425020/