java - Android底板不折叠

标签 java android bottom-sheet

我正在尝试创建一个简单的 Bottom Sheet 布局,一个按钮显示和其他折叠,但它不起作用。我在关注 this教程,但仍然没有。所以我试图传递按钮内部的状态,然后传递到回调方法中以隐藏或展开, Bottom Sheet 无法向下滚动!

这是布局。

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_botton_test"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingTop="24dp">

        <Button
            android:id="@+id/button_1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Button 1"
            android:padding="16dp"
            android:layout_margin="8dp"
            android:textColor="@android:color/white"
            android:background="@android:color/holo_green_dark"/>

        <Button
            android:id="@+id/button_2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:layout_margin="8dp"
            android:text="Button 2"
            android:textColor="@android:color/white"
            android:background="@android:color/holo_blue_light"/>

        <Button
            android:id="@+id/button_3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:layout_margin="8dp"
            android:text="Button 3"
            android:textColor="@android:color/white"
            android:background="@android:color/holo_red_dark"/>

    </LinearLayout>

</ScrollView>

<android.support.v4.widget.NestedScrollView
    android:id="@+id/bottom_sheet"
    android:layout_width="match_parent"
    android:layout_height="350dp"
    android:clipToPadding="true"
    android:background="@android:color/holo_orange_light"
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
    >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="opaa"
        android:padding="16dp"
        android:textSize="16sp"/>

</android.support.v4.widget.NestedScrollView>

Activity :

private View bottomSheet;
private Button button1,button2,button3;
private BottomSheetBehavior mBottomSheetBehavior;

bottomSheet = findViewById( R.id.bottom_sheet );
    button1 = (Button)findViewById(R.id.button_1);
    button2 = (Button)findViewById(R.id.button_2);
    button3 = (Button)findViewById(R.id.button_3);

    mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
    mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);

    mBottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
        @Override
        public void onStateChanged(View bottomSheet, int newState) {
            if (newState == BottomSheetBehavior.STATE_COLLAPSED) {
                mBottomSheetBehavior.setPeekHeight(0);
            }
            if(newState == BottomSheetBehavior.STATE_EXPANDED){
                mBottomSheetBehavior.setPeekHeight(500);
            }
        }

        @Override
        public void onSlide(View bottomSheet, float slideOffset) {
        }
    });
     button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
        }
    });
    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
        }
    });

最佳答案

我自己尝试该教程时遇到了同样的问题。

您必须将 BottomSheetBehavior 设置为可隐藏。此外,COLLAPSED 状态可能不是您要查找的状态。要使 BottomSheet 完全消失,您必须将状态设置为 HIDDEN。像这样:

mBottomSheetBehavior.setHideable(true);
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);

关于java - Android底板不折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44589034/

相关文章:

java - 如何使用MappedByteBuffer从java中的映射文件中逐行读取

java - android - 重复一个switch语句

Android - ResourcesNotFoundException 试图通过资源 id 设置操作栏图标时

android - 更改 Edittext onFouce 的边框 (Android)

java - Keytab 和 KDC 中使用 JAAS 的 Kerberos 用户主体

android - 当应用程序处于停止状态时接收 Android GCM 通知

android - float 按钮和底部片断

java - Bottom Sheet 展开时最小化带有动画的底部导航栏

android - 将 BottomSheetDialogFragment 高度设置为全屏

Java 格式化