gpt4 book ai didi

Android PopupWindow 与 DialogFragment

转载 作者:行者123 更新时间:2023-11-29 21:53:31 25 4
gpt4 key购买 nike

我正在尝试制作一个弹出窗口,该窗口会在我的应用程序中单击按钮时膨胀,显示一个由适配器填充的 ListView 。目前,我正在使用 DialogFragment,它工作正常。但我希望能够调整对话框的大小,最好是调整对话框的位置。

经过一些研究,PopupWindow 允许您调整框的大小和位置,但它不能很好地在其 View 中实例化 fragment 。 DialogFragment 非常适合使用 fragment 和 ListView ,但据我所知,您无法控制它的大小和位置。

有没有人在创建动态弹出窗口方面有类似的情况或经验?

最佳答案

要更改 DialogFragment 的大小,我使用 OnCreateView 方法执行了以下操作

注意:MonoDroid 的 C# 代码;轻松翻译成原始 Android 的 Java

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
base.OnCreateView(inflater, container, savedInstanceState);

View thisView = inflater.Inflate(Resource.Layout.NewContactDialog, container, false);

thisView.Post(() =>
{
ViewGroup.LayoutParams lp = thisView.LayoutParameters;

lp.Width = 500;

thisView.LayoutParameters = lp;

thisView.Invalidate();
}

);

return thisView;
}

此代码来自实验。我选择的只是使用居中的 DialogFragment(默认行为)并取消背景调暗。您可以覆盖 DF 的样式,并基于现有主题

<style name="MyDialogFragment" parent="android:Theme.Holo.Dialog">
<item name="android:windowIsFloating">true</item>
</style>

或者完全从头开始设计

<style name="MyDialogFragment">
... (set all items, check docs)
</style>

开始尝试使用上面的 MyDialogFragment 样式并将 windowIsFloating 设置为 false并查看效果(只需使用 SetStyle 成员将您的主题设置为此)。

样式和主题的一些很好的链接,您需要进行自己的样式设置和覆盖默认设置:

http://www.therealjoshua.com/2012/01/styling-android-with-defaults/

http://developer.android.com/guide/topics/ui/themes.html/

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/styles.xml/

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml/

老实说,使用 DialogFragments 和 PopupWindows 很痛苦,但它们是解决一些实际 GUI 问题的专用 View ,所以不要放弃。如果您需要更多信息,请在下面的评论中提问(我知道这不是答案,我只是想提供帮助,因为我现在正在研究这些东西)。

关于Android PopupWindow 与 DialogFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13827138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com