Когда бот-лист расширяется, как остановить другие события в деятельности? - PullRequest
0 голосов
/ 24 апреля 2020

В моем приложении android есть действие, в котором есть обзор переработчика, а также кнопка с плавающим действием, и при щелчке по этой кнопке откроется нижняя таблица. Когда моя нижняя таблица развернута, я показываю тусклый экран с несколькими иконками, которые будут внизу экрана. Но когда я попытался прокрутить тусклый экран (хотя на экране ничего нет, кроме пустого пространства), мое окно повторного просмотра прокручивается, что находится за нижним листом. Как сделать так, чтобы окно повторного использования не прокручивалось при расширении нижнего листа .?

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:dsm="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:focusable="true"
    dsm:layout_behavior="@string/bottom_sheet_behavior">

    <LinearLayout
        android:id="@+id/linear_layout_for_menu_row1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/global_default_textSize_70px"
        android:baselineAligned="false"
        android:orientation="horizontal"
        android:paddingStart="@dimen/global_default_margin"
        android:paddingEnd="@dimen/global_default_margin">

        <include
            android:id="@+id/home_elog_entry_menu_row1_item_1"
            layout="@layout/home_elog_entry_options_view_item"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:visibility="gone" />

        <include
            android:id="@+id/home_elog_entry_menu_row1_item_2"
            layout="@layout/home_elog_entry_options_view_item"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:visibility="gone" />

        <include
            android:id="@+id/home_elog_entry_menu_row1_item_3"
            layout="@layout/home_elog_entry_options_view_item"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:visibility="gone" />

        <include
            android:id="@+id/home_elog_entry_menu_row1_item_4"
            layout="@layout/home_elog_entry_options_view_item"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:visibility="gone" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/linear_layout_for_menu_row2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/linear_layout_for_menu_row1"
        android:layout_marginTop="@dimen/global_default_margin"
        android:layout_marginBottom="@dimen/global_default_textSize_70px"
        android:baselineAligned="false"
        android:orientation="horizontal"
        android:paddingStart="@dimen/global_default_margin"
        android:paddingEnd="@dimen/global_default_margin">

        <include
            android:id="@+id/home_elog_entry_menu_row2_item_1"
            layout="@layout/home_elog_entry_options_view_item"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:visibility="gone" />

        <include
            android:id="@+id/home_elog_entry_menu_row2_item_2"
            layout="@layout/home_elog_entry_options_view_item"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:visibility="gone" />

        <include
            android:id="@+id/home_elog_entry_menu_row2_item_3"
            layout="@layout/home_elog_entry_options_view_item"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:visibility="gone" />

        <include
            android:id="@+id/home_elog_entry_menu_row2_item_4"
            layout="@layout/home_elog_entry_options_view_item"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:visibility="gone" />

    </LinearLayout>

    <RelativeLayout
        android:id="@+id/home_elog_entry_options_close_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/linear_layout_for_menu_row2"
        android:layout_centerHorizontal="true">

        <View
            android:id="@+id/elog_entry_options_view"
            android:layout_width="@dimen/global_default_height_200px"
            android:layout_height="@dimen/global_default_height_100px"
            android:layout_centerHorizontal="true"
            android:background="@drawable/home_elog_option_add_button_background"
            android:contentDescription="@string/global_contentDescription" />

        <com.welldoc.platform.android.ui.customcomponents.LatoTextView
            android:id="@+id/elog_entry_option_add_label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@id/elog_entry_options_view"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center|bottom"
            android:padding="6dp"
            android:text="&#043;"
            android:textColor="@color/white"
            android:textSize="@dimen/global_default_textSize_80px"
            dsm:textStyle="museosans_bold"
            tools:ignore="HardcodedText,SpUsage" />

    </RelativeLayout>

</RelativeLayout>

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Добавьте верхний макет нижнего листа в xml этих строк:

android:clickable="true"
android:focusable="true"
0 голосов
/ 24 апреля 2020

Полагаю, вы пытаетесь прокрутить RecyclerView, пока BottomSheet находится в состоянии BottomSheetBehavior.STATE_COLLAPSED с некоторой высотой, установленной с помощью setPeekHeight() или с BottomSheetBehavior.STATE_HALF_EXPANDED, так что ваш RecyclerView и другие вещи на фон по-прежнему можно нажимать или прокручивать в вашем случае.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Как будто любой виджет на экране не мешает вам манипулировать ими, потому что когда вы касаетесь любого виджета, вы просто поворачиваете изменить фокус текущего виджета (BottomSheet в вашем случае) на другой виджет (RecyclerView в вашем случае).

Если вы хотите изменить это поведение, то вам нужно отключить представления в фоновом режиме, в то время как BottomSheet находится в определенном состоянии. И для этого есть несколько способов.

Один из способов - добавить View, который охватывает все другие виды на экране (поместите его в соответствии с этими представлениями, чтобы его можно было расположить сверху из них, так что, когда вы касаетесь экрана от BottomSheet, вы можете просто нажать этот вид).

Просмотреть пример:

<View
    android:id="@+id/view_background"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#99000000"
    android:visibility="gone" />

И вам нужно установить это представление на изначально View.GONE, и всякий раз, когда вы показываете BottomSheet, установите его на View.VISIBLE программно. Например, нажмите определенную кнопку, затем отобразите BottomSheet и фоновое представление:

    button3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HALF_EXPANDED);
            backgroundView.setVisibility(View.VISIBLE);
        }
    });

Вы можете установить фон представления прозрачным или полупрозрачным, чтобы RecyclerView и другие представления на фон все еще показывается.

Затем вы должны поместить логи c, когда это представление снова исчезнет; в моем предложенном подходе вы можете сделать что-то вроде, когда вы нажмете на него, затем свернете BottomSheet и скроете вид:

    backgroundView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
            background.setVisibility(View.GONE);
        }
    });

Если вам нужна дополнительная помощь, пожалуйста, дайте мне знать

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