【问题标题】:Bottom Sheet not working on Kitkat(Pre-lollipop device)底页不适用于 Kitkat(棒棒糖前设备)
【发布时间】:2016-07-04 21:26:08
【问题描述】:

您好,我可以在 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) {

            }
        });

点击我正在这样做

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);

仍然无法正常工作,任何人都知道为什么会发生这种情况。

【问题讨论】:

  • 您使用的是底部工作表对话框还是片段?请张贴代码,您在哪里显示底页。
  • 我正在使用来自支持设计的 BottomSheet

标签: android android-studio material-design android-support-library androiddesignsupport


【解决方案1】:

从 23.0.2 开始,我在使用 KitKat 和 BottomSheet 时遇到了完全相同的问题。 在我的情况下,这是由活动 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>
...

反之亦然。希望我足够具体:)

【讨论】:

  • 我注意到的另一件事是使用线性布局而不是框架布局作为底页的根容器
  • 这里我创建了更全面的示例:plnkr.co/edit/G7luSS0DHSJKMrVDoShN 事实上,我的实际布局非常大且复杂,但最终此示例中的 BottomSheet 与 Google Map 片段重叠。此行为仅在棒棒糖前的设备上重现。
  • 你的底片工作了吗...你能帮我看看吗stackoverflow.com/questions/36985403/…
【解决方案2】:

这是 google 开发人员讨论的已知问题 在某些 Pre-lollipop 设备上,底页不起作用

经过一天的研发,我找到了解决方案。 试试这个

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

在初始化视图之后放置这段代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2015-02-25
    • 2016-02-11
    • 2018-09-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多