Дочерний ImageView захватывает OnClickListener вместо родительского линейного макета - PullRequest
0 голосов
/ 30 апреля 2020

В XML я реализовал линейную компоновку с горизонтальной прокруткой с прокручиваемым текстом и с изображением с вектором, который можно рисовать (копировать в вектор буфера обмена).

XML

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="30dp">


    <ImageView
        android:id="@+id/refresh"
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="?attr/selectableItemBackgroundBorderless"
        app:srcCompat="@drawable/ic_new"
        tools:ignore="VectorDrawableCompat" />

    <LinearLayout
        android:id="@+id/copy"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:background="?attr/selectableItemBackground"
        android:orientation="horizontal"
        android:paddingStart="-3dp"
        android:paddingLeft="-3dp"
        android:clickable="true"
        android:focusable="true">


        <HorizontalScrollView
            android:layout_width="290dp"
            android:layout_height="wrap_content"
            android:clickable="false">


            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:clickable="false">


                <TextView
                    android:id="@+id/gen"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="start"
                    android:paddingStart="5dp"
                    android:paddingLeft="5dp"
                    android:text="Sample Text Sample Text Sample Text Sample Text Sample Text "
                    android:textSize="24sp"
                    android:clickable="false"/>

            </LinearLayout>
        </HorizontalScrollView>

        <ImageView
            android:id="@+id/pos"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:scaleX="-1"
            app:srcCompat="@drawable/ic_copy"
            tools:ignore="VectorDrawableCompat"
            android:clickable="false"/>


    </LinearLayout>

    <TextView
        android:id="@+id/Length"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="44dp"
        android:text="Long Text Sample"
        android:textSize="13sp" />

    <SeekBar
        android:id="@+id/pwSeekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginTop="70dp"
        android:max="128"
        android:min="8"/>


</RelativeLayout>

В Java Я реализовал onclicklistener для родительского LinearLayout, содержащего просмотр прокрутки и просмотр изображения.

Java

copyclipboard = (LinearLayout) view.findViewById(R.id.copy);


        copyclipboard.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clipboard = (ClipboardManager) requireActivity().getSystemService(Context.CLIPBOARD_SERVICE);
                clip = ClipData.newPlainText("text", gen.getText());
                clipboard.setPrimaryClip(clip);
                Toast.makeText(getActivity(), "Copied", Toast.LENGTH_SHORT).show();
            }
        });

Проблема, с которой я сталкиваюсь, заключается в том, что onclicklistener не реагирует при нажатии на более чем 90% области и работает только тогда, когда область, которую охватывает просмотр изображений (ID pos). Как мне решить эту проблему?

1 Ответ

0 голосов
/ 02 мая 2020

Ваш горизонтальный вид потребляет все клики. Либо удалите вид горизонтальной прокрутки и работайте с выделением в текстовом представлении, либо вы можете написать свой собственный вид горизонтальной прокрутки. Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...