我希望在底部工作表完全打开时向下滚动视图(向上拖动到完成屏幕)。它向上滚动时效果很好但在向下滚动时不起作用。相反,整个底层都下降了。任何出路?
主要活动
import android.os.Bundle;
import android.support.design.widget.BottomSheetBehavior;
import android.support.design.widget.BottomSheetDialog;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.TypedValue;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button fab = (Button) findViewById(R.id.button);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(MainActivity.this);
View parentView = getLayoutInflater().inflate(R.layout.sheetlayout,null);
bottomSheetDialog.setContentView(parentView);
BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from((View) parentView.getParent());
bottomSheetBehavior.setPeekHeight(
(int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,100,getResources().getDisplayMetrics()
)
);
bottomSheetDialog.show();
}
});
}
}
SheetLayout.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button1" />
<Button
android:text="button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button2" />
<Button
android:text="button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button3" />
<Button
android:text="button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button4" />
<Button
android:text="button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button5" />
<Button
android:text="button6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button18" />
<Button
android:text="button7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button7" />
<Button
android:text="button8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button8" />
<Button
android:text="button9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button9" />
<Button
android:text="button10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button10" />
<Button
android:text="button11"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button11" />
<Button
android:text="button12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button12" />
<Button
android:text="button13"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button13" />
<Button
android:text="button14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button14" />
<Button
android:text="button15"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button15" />
<Button
android:text="button16"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button16" />
<Button
android:text="button17"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button17" />
<Button
android:text="button18"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button6" />
</LinearLayout>
</ScrollView>
EDIT1
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent">
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button1" />
<Button
android:text="button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button2" />
<Button
android:text="button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button3" />
<Button
android:text="button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button4" />
<Button
android:text="button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button5" />
<Button
android:text="button6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button18" />
<Button
android:text="button7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button7" />
<Button
android:text="button8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button8" />
<Button
android:text="button9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button9" />
<Button
android:text="button10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button10" />
<Button
android:text="button11"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button11" />
<Button
android:text="button12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button12" />
<Button
android:text="button13"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button13" />
<Button
android:text="button14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button14" />
<Button
android:text="button15"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button15" />
<Button
android:text="button16"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button16" />
<Button
android:text="button17"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button17" />
<Button
android:text="button18"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button6" />
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
</ScrollView>
EDIT2
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<Button
android:text="@string/button1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:id="@+id/button1"
android:layout_weight="0.66" />
<Button
android:text="button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button2" />
<Button
android:text="button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button3" />
<Button
android:text="button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button4" />
<Button
android:text="button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button5" />
<Button
android:text="button6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button18" />
<Button
android:text="button7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button7" />
<Button
android:text="button8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button8" />
<Button
android:text="button9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button9" />
<Button
android:text="@string/button10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button10" />
<Button
android:text="@string/button11"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button11" />
<Button
android:text="@string/button12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button12" />
<Button
android:text="button13"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button13" />
<Button
android:text="button14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button14" />
<Button
android:text="button15"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button15" />
<Button
android:text="button16"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button16" />
<Button
android:text="button17"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button17" />
<Button
android:text="button18"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button6" />
</LinearLayout>
</ScrollView>
</android.support.design.widget.CoordinatorLayout>
答案 0 :(得分:6)
我遇到了同样的问题并使用android.support.v4.widget.NestedScrollView修复了它。下面是我的底部工作表布局代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="8dp"
android:paddingTop="8dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:foreground="?attr/selectableItemBackground"
android:orientation="horizontal"
android:paddingBottom="8dp"
android:paddingLeft="@dimen/activity_margin"
android:paddingRight="@dimen/activity_margin"
android:paddingTop="8dp">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginRight="32dp"
android:src="@drawable/ic_email_black_24dp"
android:tint="#737373" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="Email a Copy"
android:textColor="#737373"
android:textSize="16sp" />
</LinearLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webpage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"></WebView>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
答案 1 :(得分:1)
我也遇到了同样的问题,并使用androidx.core.widget.NestedScrollView进行了修复,以下是我的底部页面布局代码。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<RelativeLayout
android:layout_margin="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--Add your UI here -->
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
</ScrollView>
答案 2 :(得分:0)
我遇到了同样的问题,但我正在使用ListView,而不是使用Scroll View,但我希望我的回答可以帮到你!
只需将FrameLayout设置为Layout中的父级,将按钮放在LinearLayout中并设置其layout_height =“300dp”。 最后从代码隐藏文件中删除setPeekHeight。
<强> BottomSheetLayout.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ScrollView
android:layout_height="match_parent"
android:layout_width="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="300dp">
<Button
android:text="button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button1" />
<Button
android:text="button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button2" />
<Button
android:text="button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button3" />
<Button
android:text="button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button4" />
<Button
android:text="button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button5" />
<Button
android:text="button6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button18" />
<Button
android:text="button7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button7" />
<Button
android:text="button8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button8" />
<Button
android:text="button9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button9" />
<Button
android:text="button10"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button10" />
<Button
android:text="button11"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button11" />
<Button
android:text="button12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button12" />
<Button
android:text="button13"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button13" />
<Button
android:text="button14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button14" />
<Button
android:text="button15"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button15" />
<Button
android:text="button16"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button16" />
<Button
android:text="button17"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button17" />
<Button
android:text="button18"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button6" />
</LinearLayout>
</ScrollView>
</FrameLayout>
答案 3 :(得分:0)
到目前为止我知道普通的滚动视图不适用于Bottom-sheet,而向下滚动时, Bottomsheet
也会 get down
,即 not expected behavior
!
相反,您可以尝试 NestedScrollView,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="8dp"
app:behavior_hideable="false"
app:behavior_peekHeight="0dp"
app:layout_behavior="com.google.android.material.bottomsheet.BottomSheetBehavior">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="Any Long Text" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
答案 4 :(得分:-1)
您要做的只是将ScrollView
更改为NestedScrollView
。