我正在开发一个应用程序,我必须在单击按钮时显示快速操作对话框。以下是我希望如何实现的示例。
直到现在我无法弄清楚如何制作自定义快速操作对话框。但我尝试过使用一项活动和一些我接近实现的目标。这是我到目前为止所做的。
点击按钮我将意图传递给活动:
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
使活动透明化。
Styles.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。
现在,我有两个问题:
答案中的任何一个都可以帮助我。
任何形式的帮助都将受到赞赏。
答案 0 :(得分:2)
我想我解决了我的问题。现在看来它是什么样的。
集成以下代码以设置其位置。
WindowManager.LayoutParams wmlp = this.getWindow().getAttributes();
wmlp.gravity = Gravity.TOP | Gravity.LEFT;
wmlp.x = 80; // x position
wmlp.y = 60; // y position
答案 1 :(得分: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());