是否可以将持久底片作为片段?
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>
【讨论】:
这对我来说似乎是一个不错的选择,但是你能提供一些关于如何使用它的代码吗?也许还有一些关于您计划如何使其可重复使用的想法?以上是关于是否可以将持久底片作为片段?的主要内容,如果未能解决你的问题,请参考以下文章