如何点击活动的一部分?

时间:2016-02-05 22:41:39

标签: android android-layout android-activity

最近,我不得不使用工具栏创建透明活动,用户将在其中键入要查询的内容。活动的其余部分应该是透明的,并允许用户交互。我发现这样做是为了:

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>

它看起来如何:

enter image description here

2 个答案:

答案 0 :(得分:3)

您无法通过透明活动执行此操作。当你进行另一项活动时,原件会暂停并且是非交互式的。你想用一个片段来做这件事。

答案 1 :(得分:0)

处理热门活动中的触摸事件,并使用某种方法将其传递给第二个活动,例如backgroundActivity.handleEvent(event)