Нижний лист не работает на Kitkat (устройство до леденца на палочке)

Привет, я могу запустить нижний лист на Android 5.0, но не на Kitkat.

Отредактировано Странно то, что когда я вижу последнее приложение и снова открываю его, оно начинает работать? без понятия O.o Вот мой build.gradle

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.2'

    defaultConfig {

        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
..}

View mBottomSheet = view.findViewById(R.id.location_bottom_sheet);
BottomSheetBehavior        mBehavior = BottomSheetBehavior.from(mBottomSheet);

        mBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
            @Override
            public void onStateChanged(@NonNull View bottomSheet, int newState) {

            }

            @Override
            public void onSlide(@NonNull View bottomSheet, float slideOffset) {

            }
        });

на Click я делаю это

final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                mBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
                mBottomSheet.setVisibility(View.VISIBLE);
                handler.removeCallbacks(this);
            }
        }, 500);

все еще это не работает, у кого-нибудь есть идеи, почему это происходит.


comment
Вы используете диалог нижнего листа или фрагмент? Пожалуйста, напишите код, где вы показываете нижний лист.   -  person Harry's Lab    schedule 18.03.2016
comment
Я использую BottomSheet из службы поддержки   -  person silentsudo    schedule 18.03.2016


Ответы (2)


У меня была точно такая же проблема с KitKat и BottomSheet с 23.0.2. В моем случае это было вызвано порядком тегов в xml активности. Я поместил BottomSheet перед картой, и в этом случае BottomSheet перекрывался картой на KitKat (но не на Android 5). Итак, чтобы решить проблему, вы должны сделать, например:

 <FrameLayout
        android:id="@+id/frameMain"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
...

 <android.support.v4.widget.NestedScrollView
        android:id="@+id/bottomSheet>
...

и не наоборот. Надеюсь, я достаточно конкретен :)

person Alexandr    schedule 18.04.2016
comment
Еще одна вещь, которую я заметил, это использование linearlayout вместо макета framge в качестве корневого контейнера нижнего листа. - person silentsudo; 19.04.2016
comment
Здесь я создал более полный пример: plnkr.co/edit/G7luSS0DHSJKMrVDoShN На самом деле мой реальный макет очень большой и сложный, но, наконец, BottomSheet в этом примере перекрывается фрагментом карты Google. Это поведение воспроизводится только на устройствах до лолипопа. - person Alexandr; 19.04.2016
comment
у вас работает нижний лист... не могли бы вы помочь мне здесь stackoverflow.com/questions/36985403/ - person silentsudo; 03.05.2016

Это известная проблема, обсуждаемая разработчиками Google. На некоторых устройствах Pre-lollipop нижний лист не работает.

Я нашел решение после R&D в течение дня. Попробуй это

  ViewCompat.postOnAnimation(yourCoordinator, new Runnable() {
            @Override
            public void run() {
                ViewCompat.postInvalidateOnAnimation(yourCoordinator);
            }
        });

Поместите этот код после инициализации представлений

person Quick learner    schedule 29.11.2016