最近,我不得不使用工具栏创建透明活动,用户将在其中键入要查询的内容。活动的其余部分应该是透明的,并允许用户交互。我发现这样做是为了:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
如此问题所示:link。我也尝试了解决方案
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
如上所述:link
第一个链接的问题是顶级活动(包含工具栏)不再接收点击事件。第二个问题是底部活动没有收到click事件。如何在透明活动中单击时,如何使顶级活动接收点击事件并将其传递给底部活动?
这是我的热门活动布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/root_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:clickable="true"
android:elevation="2dp"
android:minHeight="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dip"
android:backgroundTint="#FFF"
android:hint="@string/act_search_toolbar_hint"
android:textColor="#757575"
android:textColorHint="#757575"/>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="#FFF"/>
</LinearLayout>
它看起来如何:
答案 0 :(得分:3)
您无法通过透明活动执行此操作。当你进行另一项活动时,原件会暂停并且是非交互式的。你想用一个片段来做这件事。
答案 1 :(得分:0)
处理热门活动中的触摸事件,并使用某种方法将其传递给第二个活动,例如backgroundActivity.handleEvent(event)
。