5

我正在开发一个应用程序,我必须在单击按钮时显示快速操作对话框。这是我希望如何实现的示例。

我想要实现的。

直到现在我还想不出如何制作一个自定义的快速操作对话框。但是我尝试过使用一项活动以及一些我必须达到的目标。这是我到目前为止所做的。

单击按钮时,我将意图传递给活动:

if (v.getId() == R.id.points) {
        Toast.makeText(MainActivity.this, "Clicked on points",
                Toast.LENGTH_SHORT).show();
        Intent i = new Intent(MainActivity.this, PointsActionMenu.class);
        startActivity(i);
    }

而且我习惯于styles.xml使活动透明。

样式.xml

<style name="Theme.Transparent" parent="android:Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

实现这些东西我在我的屏幕上得到了这个 UI。 到达这里

现在,我有两个问题:

  1. 我使用了活动并设计了一个布局来满足我的需求。是否有任何简单的方法可以使用快速操作对话框来实现这一点。我已经为此经历了 2-3 个示例,但我无法根据需要对其进行自定义。
  2. 就我使用活动实现而言,它显示在屏幕中央,我可以将活动的默认位置更改为右上角,如图所示。

任何一个答案都可以帮助我。

任何形式的帮助将不胜感激。

4

2 回答 2

2

我想我解决了我的问题。这就是它现在的样子。

What I found

集成以下代码来设置它的位置。

WindowManager.LayoutParams wmlp = this.getWindow().getAttributes();

    wmlp.gravity = Gravity.TOP | Gravity.LEFT;
    wmlp.x = 80; // x position
    wmlp.y = 60; // y position
于 2013-04-20T09:56:31.043 回答
2

您可能需要考虑在不同的设备和屏幕尺寸上会发生什么。考虑使用以下方法将像素缩放到 dp:

int x = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics());
int y = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 60, getResources().getDisplayMetrics());

编辑:

wmlp.x = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics());
wmlp.y = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 60, getResources().getDisplayMetrics());
于 2013-04-20T10:32:37.833 回答