我的bottom-sheet出现问题,因为当我打开活动时,它会阻止视图
我认为这是因为XML属性声明bottom-sheet的高度为350dp:
<android.support.v4.widget.NestedScrollView
android:id="@+id/bottom_sheet"
android:layout_width="match_parent"
android:layout_height="350dp"
android:background="?android:attr/windowBackground"
android:clipToPadding="true"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
问题是,我无法将该值更改为0dp,因为下次当我尝试打开bottom-sheet时,没有bottom-sheet,因为高度为0dp,所以它赢了什么都没有。 我的问题是,有没有办法宣布bottom-sheet关闭? (我尝试将stateState设置为STATE_COLLAPSED但不起作用)。 Bellow是与底部工作表交互的java代码。 JAVA:
View bottomSheet = findViewById( R.id.bottom_sheet );
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);
//mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
//mBottomSheetBehavior.isHideable();
}
}
@Override
public void onSlide(View bottomSheet, float slideOffset) {
}
});
答案 0 :(得分:9)
写下这个:
mBottomSheetBehavior.setPeekHeight(0);
答案 1 :(得分:6)
首先你必须添加属性
app:behavior_hideable="true"
中的
<android.support.v4.widget.NestedScrollView
android:id="@+id/bottom_sheet"
android:layout_width="match_parent"
android:layout_height="350dp"
android:background="?android:attr/windowBackground"
android:clipToPadding="true"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
然后您可以使用
隐藏底部工作表mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN)
而不是
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED)
状态COLLAPSED介于HIDDEN和EXPANDED之间,其高度必须由属性指定:
app:behavior_peekHeight="200dp"
答案 2 :(得分:1)
在我的情况下,我无法隐藏底片,它被置于我的视线之上。我发现布局文件中的animateLayoutChanges = "true"
导致了这个问题。
答案 3 :(得分:0)
在onCreate
内添加这些行,它可以隐藏底栏
mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
mBottomSheetBehavior.setHideable(true); //Important to add
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); //Important to add
答案 4 :(得分:0)
就我而言,我使用的是batch_size = 1
epochs = 25
model = Sequential()
model.add(Conv1D(32, input_shape=(1040,1), kernel_size=100,padding='same',name='ConvLayer1', strides=1))
model.add(LeakyReLU(alpha=0.1))
model.add(MaxPooling1D(pool_size=70, strides=1, padding='same',name='PoolingLayer1'))
#model.add(Dropout(0.10))
model.add(Conv1D(64, kernel_size=70,padding='same',name='ConvLayer2',strides=1))
model.add(LeakyReLU(alpha=0.1))
model.add(MaxPooling1D(pool_size=40, strides=1, padding='same',name='PoolingLayer2'))
#model.add(Dropout(0.10))
model.add(Conv1D(128, kernel_size=40,padding='same',name='ConvLayer3',strides=1))
model.add(LeakyReLU(alpha=0.1))
model.add(MaxPooling1D(pool_size=10, strides=1, padding='same',name='PoolingLayer3'))
#model.add(Dropout(0.10))
model.add(Flatten())
model.add(Dense(1,name='output', activation='linear'))
w = model.get_weights()
model.compile(loss='mse', optimizer=keras.optimizers.Adam(lr=0.001),metrics=['mse'])
。
BottomSheetDialog
- 属性用于确定,如果我们的底页将在向下滑动时隐藏。换句话说,如果未设置峰值高度,则底部页面顶部不在屏幕上。
app:behavior_hideable
- 用于表示底部工作表可见数量的属性值。
app:behavior_peekHeight
我将peekHeight设置为50dp。并且peek高度与我设置200dp的bottomSheet布局高度本身无关(仅作为示例)。
如果扩展了底部工作表,您可以在XML查看器中查看更改,如果是,则从xml布局添加<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/bottom_sheet_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="10dp"
android:orientation="vertical"
android:background="@color/colorPrimaryDerived"
app:layout_behavior="@string/bottom_sheet_behavior"
app:behavior_hideable="true"
app:behavior_peekHeight="0dp"> ........... </LinearLayout>
,它将隐藏并通知您当前状态。
答案 5 :(得分:0)
收起时将app:behavior_hideable =“ false”设置为
答案 6 :(得分:0)
您只需添加以下代码即可完美运行。
要隐藏底页:-
bottomSheetBehavior.state = BottomSheetBehavior.STATE_HIDDEN
显示底页:-
bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
答案 7 :(得分:-1)
您可以通过将父线性布局的可见性设置为“ gone”来手动隐藏该底部工作表 将此行放在您的代码中
if (confirmLayoutBehaviour.getState() != BottomSheetBehavior.STATE_EXPANDED) {
//todo hide your bottom sheet if its already open
confirmLayout.setVisibility(View.GONE);
} else {
//set it to visible if its not open
confirmLayout.setVisibility(View.VISIBLE);
}
对我有用,请尝试