From bbcb183c2485a575730f752ede25c89a7ff022ec Mon Sep 17 00:00:00 2001 From: akwizgran Date: Fri, 14 Aug 2020 15:23:21 +0100 Subject: [PATCH] Use a single click target that covers all transport indicators. --- .../android/navdrawer/NavDrawerActivity.java | 4 +- .../widget/TouchInterceptingLinearLayout.java | 41 +++++++++++++++++++ .../src/main/res/layout/transports_list.xml | 6 ++- 3 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 briar-android/src/main/java/org/briarproject/briar/android/widget/TouchInterceptingLinearLayout.java diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java index a5dd6f97f..3d89bb421 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java @@ -11,6 +11,7 @@ import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; import com.google.android.material.navigation.NavigationView; @@ -147,7 +148,8 @@ public class NavDrawerActivity extends BriarActivity implements drawerLayout = findViewById(R.id.drawer_layout); navigation = findViewById(R.id.navigation); GridView transportsView = findViewById(R.id.transportsView); - transportsView.setOnItemClickListener((parent, view, position, id) -> { + LinearLayout transportsLayout = findViewById(R.id.transports); + transportsLayout.setOnClickListener(v -> { LOG.info("Starting transports activity"); startActivity(new Intent(this, TransportsActivity.class)); }); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/widget/TouchInterceptingLinearLayout.java b/briar-android/src/main/java/org/briarproject/briar/android/widget/TouchInterceptingLinearLayout.java new file mode 100644 index 000000000..8e3955c0b --- /dev/null +++ b/briar-android/src/main/java/org/briarproject/briar/android/widget/TouchInterceptingLinearLayout.java @@ -0,0 +1,41 @@ +package org.briarproject.briar.android.widget; + +import android.annotation.TargetApi; +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.widget.LinearLayout; + +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +import androidx.annotation.Nullable; + +@NotNullByDefault +public class TouchInterceptingLinearLayout extends LinearLayout { + + public TouchInterceptingLinearLayout(Context context) { + super(context); + } + + public TouchInterceptingLinearLayout(Context context, + @Nullable AttributeSet attrs) { + super(context, attrs); + } + + public TouchInterceptingLinearLayout(Context context, + @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @TargetApi(21) + public TouchInterceptingLinearLayout(Context context, AttributeSet attrs, + int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent e) { + onTouchEvent(e); + return false; + } +} diff --git a/briar-android/src/main/res/layout/transports_list.xml b/briar-android/src/main/res/layout/transports_list.xml index d25d038a4..67e40fb07 100644 --- a/briar-android/src/main/res/layout/transports_list.xml +++ b/briar-android/src/main/res/layout/transports_list.xml @@ -1,8 +1,9 @@ - @@ -12,7 +13,8 @@ android:id="@+id/transportsView" android:layout_width="match_parent" android:layout_height="wrap_content" + android:listSelector="@android:color/transparent" android:numColumns="3" tools:listitem="@layout/list_item_transport" /> - +