如何检测 Android ActionBar 中的触摸事件?

How can I detect a touch event in an Android ActionBar?

我的应用创建了一个 ActionBar (androidx.appcompat.app.ActionBar),如下所示:

        mActionBar = getSupportActionBar();

我需要检测 ActionBar 中的触摸事件并使用 dispatchTouchEvent() 来这样做:

    public boolean dispatchTouchEvent(MotionEvent ev) {
    // TODO Auto-generated method stub
    super.dispatchTouchEvent(ev);
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
        // Do something, if and only if the ActionBar is tapped.
    }
    return false;
}

这会检测应用中任何位置发生的触摸事件。我只想考虑那些来自 mActionBar 的事件。 TIA!

我忘了说,有问题的 activity 只包含一个 WebView 和一个 FloatingActionButton:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/webv"
android:layout_width="match_parent"
android:layout_height="match_parent">

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    android:id="@+id/swipe"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <WebView
        android:id="@+id/browser_page"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/user_view"
    android:background="@null"
    android:layout_margin="10dp"
    android:visibility="invisible"
    android:listSelector="@android:color/darker_gray"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/add_comment"
    android:visibility="visible"
    app:fabSize="normal"
    app:srcCompat="@drawable/plus_circle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="100dp"
    android:layout_marginTop="50dp"
    android:layout_marginEnd="10dp"
    android:layout_alignParentEnd="true"
    android:layout_centerHorizontal="true" />

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="invisible"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"/>
</RelativeLayout>

我更改了 dispatchTouchEvent() 如下:

    public boolean dispatchTouchEvent(MotionEvent ev) {
    // TODO Auto-generated method stub
    super.dispatchTouchEvent(ev);
    if (ev.getAction() == MotionEvent.ACTION_DOWN && ev.getY() <= mActionBar.getHeight() + actionbar_start) {
        // Do something, if and only if the ActionBar is tapped.
        return false;
    }
    return true;
}

STATUS_BAR_HEIGHT is 24dp and
DisplayMetrics metrics = getResources().getDisplayMetrics();
actionbar_start = Math.round(STATUS_BAR_HEIGHT * metrics.density);

.