android


Bottom Sheet Behavior needed to be shown only on button click?


I have implemented bottom sheet using appcompat-v7:23.2.1.Everything is working fine,but the only problem is that when I drag up on the layout,the bottom sheet appears.I dont want the bottom sheet to be shown while dragging up on the layout when the bottom sheet is not shown on the screen.
<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#color/DarkGray"
tools:context=".bottom_sheets.grid.BottomSheetGridActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_behavior="#string/appbar_scrolling_view_behavior">
<Button
android:id="#+id/btnView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Show view" />
</LinearLayout>
<LinearLayout
android:id="#+id/bottom_sheet1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:layout_marginBottom="8dp"
app:layout_behavior="#string/bottom_sheet_behavior">
<android.support.v7.widget.RecyclerView
android:id="#+id/recyclerView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:background="#fff"
/>
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
MainActivity
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bottom_grid);
Button btnView = (Button) findViewById(R.id.btnView);
View bottomSheet = findViewById(R.id.bottom_sheet1);
behavior = BottomSheetBehavior.from(bottomSheet);
btnView.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
}
});
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
}
});
RecyclerView listRecyclerView = (RecyclerView) findViewById(R.id.recyclerView1);
listRecyclerView.setHasFixedSize(true);
listRecyclerView.setLayoutManager(new LinearLayoutManager(this));
RecyclerItemAdapter recyclerItemAdapter = new RecyclerItemAdapter(createItems(), this);
listRecyclerView.setAdapter(recyclerItemAdapter);
}
The above code will show bottom sheet on click,but also the sheet appears while dragging up on the layout.Is there something i missing up.Please help me!
Thanks #oguzhand
behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
#Override
public void onStateChanged(#NonNull View bottomSheet, int newState) {
// React to state change
if (newState == BottomSheetBehavior.STATE_DRAGGING) {
behavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
}
#Override
public void onSlide(#NonNull View bottomSheet, float slideOffset) {
// React to dragging events
}
});
I can now disable the bottom sheet behavior when it is not shown.
You can Set the PeekHeight to 0.
behavior.setPeekHeight(0);
Well first in your
onCreate
After mapping the bottomSheet then set the peekheight to 0 and set the state as collpsed
mBottomSheet.setPeekHeight(0);
mBottomSheet.setState(BottomSheetBehavior.STATE_COLLAPSED);
Here means every time the activity begins it's gonna be collapsed as default! Then just handle the callback set it and unset it on the go
behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
#Override
public void onStateChanged(#NonNull View bottomSheet, int newState) {
// react to events
switch(newState){
case BottomSheetBehavior.STATE_COLLAPSED:
mBottomSheet.setPeekHeight(0);
break;
case case BottomSheetBehavior.STATE_EXPANDED:
mBottomSheet.setPeekHeight(400);
//then do your other staff here
}
}
#Override
public void onSlide(#NonNull View bottomSheet, float slideOffset) {
// React to dragging events
}
});

Related Links

google map: how to get address in android
Push notification in Android using Phonegap : Where do I need to put the sender id and the app id in my project?
Getting exceptions in dialog box having endless adapter implementation for its listview
Renderscript failing to export static variable
Achartengine display data from database Android
how to create edittext using cocos2d in android
Pass the checked status of CheckBoxes from rows of a ListView to another Activity on a Button click
Push notification in Android and Phonegap
ClassCastException when declare fragment in xml code
Jsoup http error fetching url
why also I can record audio in my Phone app, even if i remove the declaration of android.permission.RECORD_AUDIO
Text to Speech not working in Android 4.2 Jelly Bean
unable to retrieve value from edittext
Android: TextView Causing App to Crash
Android: How to refresh activity/set theme dynamically
How to center a textview inside a linearlayout

Categories

HOME
deep-learning
soa
cq5
big-o
visual-studio-emulator
limit
babeljs
sendgrid-api-v3
enthought
symmetricds
selectize.js
altera
azure-powershell
mapstruct
nim
dataflow-diagram
zxing
expressionengine3
fat
gpio
amazon-quicksight
android-maps
uitapgesturerecognizer
scrollview
spring-security4
gojs
baidu-map
doc
plaintext
wmp
lpsolve
ssrs-2014
dapper-simplecrud
httr
jide
mesosphere
openal
stdmap
ngmaterial
libjpeg
juice-ui
cvxpy
stax
omxplayer
ziparchive
winusb
mapinfo
findfirst
jbase
google-books
slash
graphics2d
keyup
actionfilterattribute
bcache
at-job
mruby
iiop
create.js
tinyxml
twitter-bootstrap-rails
gae-quotas
sphinxql
inputmismatchexception
hidapi
pclzip
intersect
monotouch.dialog
apache-whirr
denied
uipagecontrol
timthumb
load-time
folding
burndowncharts
application-planning
business-model

Resources

Encrypt Message