【问题标题】:Full Screen Bottom Sheet Fragment全屏底片片段
【发布时间】:2016-12-24 12:44:24
【问题描述】:

我一直在尝试在 android 中实现底部工作表片段,并且默认情况下无法将其缩放到全屏。我什至尝试将其状态设置为 STATE_EXPANDED

public void setupDialog(Dialog dialog, int style) {
       super.setupDialog(dialog, style);
       View v = View.inflate(getContext(), R.layout.fragment_my_bottom_sheet_dialog, null);
       dialog.setContentView(v);

       CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) ((View) v.getParent()).getLayoutParams();
       CoordinatorLayout.Behavior behavior = params.getBehavior();

       if (behavior != null && behavior instanceof BottomSheetBehavior) {
           Log.d(TAG, "Inside if");
           ((BottomSheetBehavior) behavior).setState(BottomSheetBehavior.STATE_EXPANDED);
           ((BottomSheetBehavior) behavior).setBottomSheetCallback(mBottomSheetCallback);
       }
   }

但这会扰乱工作表从底部向上浮动的动画。我正在尝试使用这样的关闭(X)按钮创建一个带有全屏和工具栏的模态底部工作表

Full screen bottom sheet

如果有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

  • 但这会扰乱工作表从底部向上浮动的动画。 你的意思是当附加片段时,底部工作表从底部动画到顶部?
  • 我不确定您是否还在寻找答案,但 this person's solution 有效

标签: android android-fragments


【解决方案1】:

我可以确定的是您希望使用上滑面板来执行设置。我强烈建议您使用 umano 的 Android Sliding Up Panel 库。 它有2个孩子。一个用于活动/片段,另一个用于面板。

<com.sothree.slidinguppanel.SlidingUpPanelLayout
    xmlns:sothree="http://schemas.android.com/apk/res-auto"
    android:id="@+id/sliding_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    sothree:umanoPanelHeight="68dp"
    sothree:umanoShadowHeight="4dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="Main Content"
        android:textSize="16sp" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center|top"
        android:text="The Awesome Sliding Up Panel"
        android:textSize="16sp" />
</com.sothree.slidinguppanel.SlidingUpPanelLayout>

【讨论】:

  • 我只是在尝试,问题是我想使用单独的活动/片段来实现它,因为我将拥有一些我希望与面板保持隔离的局部变量和计算。
  • 没有问题。在您的面板布局中,只需添加一个 FrameLayout。现在制作一个片段、片段布局,并在您的活动中使用 FrameLayout 中的 FragmentManager 对其进行膨胀。这样,您的面板逻辑将位于单独的类中。
  • 如果您发现任何困难,我会更新代码。但如果你明白我想说什么,那么这很好。 :)
  • 我试过了,但遇到了另一个问题。我想在片段中添加一个带有菜单项和关闭按钮的单独工具栏,并避免重置活动工具栏。你知道我能做到吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
相关资源
最近更新 更多