I tried the new BottomSheet
in Android support. Inside the BottomSheet
I have put a TextView
and a ScrollView
. The BottomSheet
showing just fine, the only problem I found is that the ScrollView
in the BottomSheet
is not scrolling. Every time I try to scroll, either the layout in main activity that scroll or the BottomSheet
changing state from collapse to expand.
This is snippet of my Activity Class code:
private BottomSheetBehavior behavior; View bottomSheet; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setTextViewOnClickListener(this, findViewById(R.id.parentLayout)); CoordinatorLayout coordinatorLayout = (CoordinatorLayout) findViewById(R.id.main_content); // The View with the BottomSheetBehavior bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet); 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 } }); @Override public void onClick(View v) { switch (v.getId()) { case R.id.tv1: setTextViewHeader("Header1"); setTextViewContent("Long_Text_1"); break; case R.id.tv2: setTextViewHeader("Header2"); setTextViewContent("Long_Text_2"); break; case R.id.tv3: setTextViewHeader("Header3"); setTextViewContent("Long_Text_3"); break; default: break; } behavior.setPeekHeight(100); behavior.setState(BottomSheetBehavior.STATE_COLLAPSED); behavior.setHideable(true); bottomSheet.requestLayout(); }
This is my Layout XML:
<?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" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.rapidgrowsolutions.android.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/tv1" style="@style/LightRow" android:text="some_long_text_here" /> <TextView android:id="@+id/tv2" style="@style/DarkRow" android:text="another_long_text_here" /> <TextView android:id="@+id/tv3" style="@style/LightRow" android:text="another_long_text_here" /> </LinearLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/bottom_sheet" android:layout_width="match_parent" android:layout_height="250dp" app:behavior_hideable="true" android:fillViewport="true" app:layout_behavior="android.support.design.widget.BottomSheetBehavior"> <android.support.v7.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#FF7733" android:orientation="vertical"> <TextView android:id="@+id/tvID1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="HEADER" android:textAppearance="?android:attr/textAppearanceMedium" /> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="9" android:background="#ffb773" android:fillViewport="true"> <TextView android:id="@+id/tvID2" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#3377ff" android:textAppearance="?android:attr/textAppearanceSmall" /> </ScrollView> </android.support.v7.widget.LinearLayoutCompat> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout>
NestedScrollView is just like ScrollView , but it supports acting as both a nested scrolling parent and child on both new and old versions of Android. Nested scrolling is enabled by default.
Hope you figured out this by now, but change View bottomSheet
to NestedScrollView bottomSheet
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With