gpt4 book ai didi

android - 如何在Android gallery中制作一个像 "share menu"这样花哨的透明菜单?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:48 24 4
gpt4 key购买 nike

在我的 Android 2.2.2 设备上,画廊看起来非常漂亮。我想在我自己的应用程序中做的是按下一个按钮,然后显示一个如下所示的菜单: enter image description here

这是否使用了任何标准的 Android 主题/样式?有人知道有这样的菜单的示例代码吗?

编辑:我发现可以用对话框模仿这个菜单。为了简化事情,我在这个例子中没有使用 ListView,只为对话框使用了一个 TextView 条目:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textColor="#FFF"
android:padding="10dp"
/>
</LinearLayout>

按下按钮时显示对话框:

                Dialog dialog = new Dialog(MyActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

dialog.setContentView(R.layout.custom_dialog);

TextView text = (TextView) dialog.findViewById(R.id.text);
text.setText("Test option 1");

WindowManager.LayoutParams WMLP = dialog.getWindow().getAttributes();
WMLP.gravity = (Gravity.BOTTOM | Gravity.LEFT);
WMLP.x = 0;
WMLP.y = 0;
dialog.getWindow().setAttributes(WMLP);

dialog.show();

这将创建一个靠近图片中菜单的对话框。但是,我仍然有两个问题:

1) 如何在对话框底部绘制这个小三角形,如上图所示?

2) 用于打开对话框的按钮水平放置在底部按钮栏的中间。所以当我按下它时,对话框应该显示在该按钮的正上方。我想做的是:

WMLP.x = middleButton.getLeft() + (middleButton.getWidth() / 2) - dialog.getWindow().getDecorView().getPaddingLeft() - (WMLP.width / 2);

问题是 WMLP.width 是 -2。我猜原因是布局宽度设置为“wrap_content”(即-2),此时实际宽度未知。那么,如何确定对话框的宽度,以便我可以将其同心放置在另一个 View 上?

更新:我终于找到了一个像这样的对话的好来源: http://www.londatiga.net/it/how-to-create-quickaction-dialog-in-android/

这正是我想要的,我现在正在我的应用中使用它。

最佳答案

您可以通过在当前位置添加一个 PopupWindow 来完成此操作,要绘制这个很酷的菜单,您将需要具有此背景的图像和要绘制的小箭头。

此外,您还应该阅读 Nine-Path Drawable 以完成此操作。

PS:我已经完成了这个,但是用了另一张图片。

关于android - 如何在Android gallery中制作一个像 "share menu"这样花哨的透明菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4997166/

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