是否可以将持久底片作为片段?

Posted

技术标签:

【中文标题】是否可以将持久底片作为片段?【英文标题】:Is it possible to have Persistent Bottom Sheet as a Fragment? 【发布时间】:2019-03-09 12:20:28 【问题描述】:

我想将 Persistent Bottom Sheet 制作为 Fragment 内的 Fragment,但无法找到任何实现它的方法。 Everywhere Persistent Bottom Sheet 被添加为 Activity/Fragment 中的布局,但是否可以将 Persistent Bottom Sheet 作为一个片段,以便我可以在其他地方重用该视图?

【问题讨论】:

向我们展示代码,看看我们是否能以某种方式帮助您 想知道您是否已经有一个工作代码? 【参考方案1】:

androidHiveBottomSheet 上有一个很棒的教程

您可以创建一个扩展BottomSheetDialogFragment 的类。

public class BottomSheetFragment extends BottomSheetDialogFragment 
    public BottomSheetFragment() 
    // Required empty public constructor
    

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
    

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) 
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_bottom_sheet_dialog, container, 
              false);
    

并使用下面的代码切换它

BottomSheetFragment bottomSheetFragment = new BottomSheetFragment();
bottomSheetFragment.show(getSupportFragmentManager(), bottomSheetFragment.getTag());

【讨论】:

我不需要模态底页。我想要持久底页。 听起来你需要创建一个通用的BottomSheetBehavior 类。 如果您不想要模态底页,则不要扩展 BottomSheetDialogFragment【参考方案2】:

你可以使用 BottomSheetDialogFragment,我想你想这样做:

然后创建navigationView文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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_
    android:layout_>

    <RelativeLayout
        android:layout_
        android:layout_>


        <android.support.design.widget.NavigationView
            android:id="@+id/navigation_view"
            android:layout_
            android:layout_
            app:itemBackground="@drawable/state_pressed"
            app:menu="@menu/activity_main_drawer" />


    </RelativeLayout>

</android.support.constraint.ConstraintLayout>

并创建文件菜单

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:showIn="navigation_view">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_camera"
            android:icon="@drawable/round_home_24"
            android:title="Inicio"
            android:checked="true"
            android:checkable="true"/>
        <item
            android:id="@+id/nav_gallery"
            android:icon="@drawable/outline_settings_24"
            android:title="Configuración"
            android:checkable="true"/>
        <item
            android:id="@+id/nav_slideshow"
            android:icon="@drawable/round_mail_outline_24"
            android:title="Email"
            android:checkable="true"/>
        <item
            android:id="@+id/nav_manage"
            android:icon="@drawable/outline_search_24"
            android:title="Buscar" />
    </group>

    <item android:title="Communicate">
        <menu>
            <item
                android:id="@+id/nav_share"
                android:icon="@drawable/outline_lock_24"
                android:title="Share" />
            <item
                android:id="@+id/nav_send"
                android:icon="@drawable/outline_account_circle_24"
                android:title="Send" />
        </menu>
    </item>

</menu>

并为borderRadius创建文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <solid android:color="#ff0000" />
            <corners android:bottomRightRadius="90dp" android:bottomLeftRadius="90dp" />
            <padding android:left="30dp"/>
        </shape>
    </item>
    <item android:state_checked="false">
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <solid android:color="@android:color/transparent" />
            <corners android:bottomRightRadius="30dp" android:topRightRadius="30dp" />
        </shape>
    </item>

</selector>

并创建 state_pressed 背景颜色

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@drawable/border_radius_tabs">
        <color android:color="@color/colorPrimary"></color>
    </item>
    <item android:state_checked="false">
<color android:color="@color/primaryLightColor"></color>
    </item>

</selector>

【讨论】:

这对我来说似乎是一个不错的选择,但是你能提供一些关于如何使用它的代码吗?也许还有一些关于您计划如何使其可重复使用的想法?

以上是关于是否可以将持久底片作为片段?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以向 Laravel 模型添加非持久属性?

android图像处理底片效果

迁移到持久功能

Core Data 可以使用 Google Docs 作为持久性存储吗?

13 个非常有用的 Python 代码片段

图像滤镜处理算法:灰度黑白底片浮雕