您现在的位置是:首页 > 文章详情

简单使用BottomSheetBehavior实现底部弹窗

日期:2018-08-16点击:603

这次带来的是BottomSheetBehavior的简单使用,BottomSheetBehavior是Android Support Library23.2中引入的,它可以轻松实现底部动作条功能。

img_6852dae42410c0530bba63e561e5672b.gif

使用方法

●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:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> //按钮要使用布局包裹否则会浮在BottomSheetBehavior之上 <Button android:layout_width="wrap_content" android:text="打开" android:id="@+id/bt" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:id="@+id/design_bottom_sheet1" android:layout_width="match_parent" android:layout_height="match_parent" //这个高度决定了BottomSheetBehavior的总高度 android:background="@color/colorAccent" app:behavior_hideable="true" //可以隐藏 app:behavior_peekHeight="300dp" //设置弹出时的高度 android:orientation="vertical" app:elevation="6dp" app:layout_behavior="@string/bottom_sheet_behavior" //这一句固定要加> <ImageView android:layout_width="wrap_content" android:layout_gravity="center" android:src="@mipmap/ic_launcher" android:layout_marginTop="20dp" android:layout_height="wrap_content" /> </LinearLayout> </android.support.design.widget.CoordinatorLayout> 

●Activity代码

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final BottomSheetBehavior bottomSheetBehavior=BottomSheetBehavior.from(findViewById(R.id.design_bottom_sheet1)); //设置默认先隐藏 bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); findViewById(R.id.bt).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //根据状态不同显示隐藏 if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN) { bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); } else if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) { bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); } } }); //设置监听事件 bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { //拖动 } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { //状态变化 } }); } } 

扩展(BottomSheetDialogFragment实现底部弹窗)

img_f81033b34d1545a7097183953d7e98cf.gif

●xml布局

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:background="@color/colorAccent" android:layout_centerHorizontal="true" android:src="@mipmap/ic_launcher" android:layout_height="200dp" /> </RelativeLayout> 

●BottomSheetDialogFragment代码

public class BottomSheetDialogFragmenttest extends BottomSheetDialogFragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.test,container,false); } } 

●Activity代码

findViewById(R.id.bt).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { BottomSheetDialogFragmenttest bottomSheetDialogFragmenttest=new BottomSheetDialogFragmenttest(); bottomSheetDialogFragmenttest.show(getSupportFragmentManager(),BottomSheetDialogFragmenttest.class.getSimpleName()); } }); 
原文链接:https://yq.aliyun.com/articles/665557
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章