我想实现“联系人详细信息”屏幕,例如Android 5.0 aka Lollipop。

为了描述当我们单击任何联系人的图标/图像时的更多内容,一个 View 从屏幕底部向上滑动。默认情况下,该 View 占据屏幕的一半,并且屏幕的其余部分是透明的,并且几乎没有添加任何Alpha。

其次,使用手指向上滑动,View向上改变其位置,透明部分也变得更暗,并且在某个位置,联系人姓名(TextView)开始减小其字体大小。这一直持续到它成为ActionBar的一部分为止。

我对如何实现这一点有一些疑问

  • 是联系人详细信息吗?查看单独的 Activity ,顶部透明一半,或者仅在联系人列表屏幕上覆盖
  • 最好的解决方案是显示带有手势的动画(用手指滑动来改变位置)。
  • 如何用手指轻扫来减小键盘的大小,以及如何确定现在TextView应该开始减小其字体大小
  • 最后一个是如何通过手指滑动更改使TextView作为操作栏的一部分
  • 最佳答案

    使用android.support.design.widget.BottomSheetDialog

    例如:

    BottomSheetDialog mBottomSheetDialog = new BottomSheetDialog(this);
    View view = getLayoutInflater().inflate(R.layout.your_layout, null);
    // do any view specific operations here like adding click listener etc..,
    mBottomSheetDialog.setContentView(view);
    mBottomSheetDialog.show();
    

    并且当您的布局中有任何可滚动的小部件(嵌套的Scrollview或RecyclerView)时,它将非常流畅。

    有趣的部分是您可以设置初始内容的高度
    BottomSheetBehavior mBehavior = BottomSheetBehavior.from((View) view.getParent());
    mBehavior.setPeekHeight(dialog height);
    

    09-30 16:47
    查看更多