[英]How to hide and show FloatingActionButton with Fragments in a ViewPager?
我試圖只在一個片段上顯示我的FloatingActionButton並隱藏其余片段。 我嘗試了多個答案,但沒有任何工作。 我試過這個解決方案:
但它沒有用。 我嘗試在兩個片段上添加按鈕,一個顯示,一個隱藏FAB並且可以正常工作,但是一旦我刪除按鈕,它就不會自動顯示。 這是我的代碼:
hidden_fragment.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
shown_fragment.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
HiddenFragment.java:
public class HiddenFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (container == null) {
return null;
}
View view = inflater.inflate(R.layout.hidden_fragment, container, false);
final FloatingActionButton fab = ((MainActivity) getActivity()).getFloatingActionButton();
if (fab != null) {
((MainActivity) getActivity()).hideFloatingActionButton();
}
return view;
}
}
ShownFragment.java:
public class ShownFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (container == null) {
return null;
}
View view = inflater.inflate(R.layout.hidden_fragment, container, false);
final FloatingActionButton fab = ((MainActivity) getActivity()).getFloatingActionButton();
if (fab != null) {
((MainActivity) getActivity()).showFloatingActionButton();
}
return view;
}
}
在我的MainActivity.java中我有這個:
public FloatingActionButton getFloatingActionButton() {
return fab;
}
public void showFloatingActionButton() {
fab.show();
}
public void hideFloatingActionButton() {
fab.hide();
}
我目前的方式不起作用。 當我啟動應用程序時,啟動的第一個片段是HiddenFragment。 但是當我去ShownFragment時,FAB沒有出現。 我嘗試了不同的方法,我為每個片段添加了一個按鈕,並將showFloatingActionButton()和hideFloatingActionButton()添加到按鈕中,並且可以正常工作。 有誰知道我做錯了什么?
要在ViewPager中顯示/隱藏帶有Fragments的FloatingActionButton,只需使用ViewPager.OnPageChangeListener
並顯示所需位置的FloatingActionButton,並將其隱藏到您想要的位置。
這將進入活動:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
switch (position) {
case 0:
fab.hide();
break;
case 1:
fab.show();
break;
case 3:
fab.hide();
break;
default:
fab.hide();
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.