Skip to main content
 首页 » 编程设计

android之BottomSheetBehavior : The view is not associated with BottomSheetBehavior

2024年02月20日28TianFang

我正在使用 Google 设计支持库 25.0.0 在我的 Activity 中,我有一个相对布局

app:layout_behavior="android.support.design.widget.BottomSheetBehavior" 

现在,当我引用它来添加 BottomSheetBehaviour 时,我收到错误

java.lang.IllegalArgumentException: The view is not associated with BottomSheetBehavior 

这是布局:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:map="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/maps_colayout" 
xmlns:app="http://schemas.android.com/tools" 
android:fitsSystemWindows="true" 
android:background="@color/white"> 
 
... 
 
<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="280dp" 
    android:layout_gravity="bottom" 
    android:id="@+id/rl_bottomsheet" 
    android:background="#F3F3F3" 
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> 
 
    ... 
 
</RelativeLayout> 

这是与 Activity 相关的代码:

CoordinatorLayout colayout = (CoordinatorLayout) findViewById(R.id.maps_colayout); 
    View bottomSheet = colayout.findViewById(R.id.rl_bottomsheet); 
    BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet); 
    behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { 
        @Override 
        public void onStateChanged(@NonNull View bottomSheet, int newState) { 
            // React to state change 
        } 
 
        @Override 
        public void onSlide(@NonNull View bottomSheet, float slideOffset) { 
            // React to dragging events 
        } 
    }); 

请您参考如下方法:

您需要在线性布局标记中添加此行。正在引用的那个。

app:layout_behavior="android.support.design.widget.BottomSheetBehavior" 

或适用于 androidx

app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior"