我希望实现的功能可以通过我用MSPaint制作的示意图来解释:
这是
很不幸,这就是结果:
我错过了什么?
谢谢。
我尝试设置FLAG_NOT_TOUCH_MODAL
,根据描述,这应该是我想要的,但它根本不起作用。我的Activity会接收所有触摸事件,甚至在其边界之外。
如果我设置 FLAG_NOT_FOCUSABLE
,那么活动窗口下面的原生控件就可以被触摸,但是当在其边界内触摸时,该活动窗口完全不可见。
我尝试在清单文件中设置isFloatingWindow=true
,但似乎没有任何区别。
有人能够实现这个吗?我会非常感激一个小的演示活动,以便我可以从中获取并进行开发。我已经尝试了WindowManager和Intent标记的多种排列组合,但似乎没有一个能完全满足我的需求。
提前感谢您。
更新:
我尝试了您的建议,但仍然无法达到所需的效果。
这是我的Activity布局xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="385dp"
android:layout_height="300dp"
android:theme="@android:style/Theme.Dialog"
tools:context="com.ui.activities.TestActivity"
android:id="@+id/testLayout"
android:visibility="visible"
android:background="@drawable/abc_ab_solid_light_holo"
android:clickable="true">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="35dp"
android:clickable="true"
android:enabled="true"
android:onClick="onClick" />
这是
Activity
类:public class TestActivity extends Activity implements View.OnClickListener {
private String TAG = TestActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
setWindowParams();
}
private void setWindowParams() {
WindowManager.LayoutParams wlp = getWindow().getAttributes();
wlp.dimAmount = 0;
wlp.flags = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
getWindow().setAttributes(wlp);
}
很不幸,这就是结果:
![Does not look like a dialog](https://istack.dev59.com/BzSez.webp)
谢谢。