我想只在一個片段上顯示我的FloatingActionButton,並在其餘部分隱藏。我已經嘗試了多個答案,沒有任何工作。我想這個解決方案:如何使用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()添加到按鈕,並且工作正常。有誰知道我做錯了什麼?
,你必須得到改變的知名度試試這個 CoordinatorLayout.LayoutParams P =(CoordinatorLayout.LayoutParams)fab.getLayoutParams()之前擺脫了錨; p.setAnchorId(View.NO_ID); fab.setLayoutParams(p); fab.setVisibility(View.GONE); –
@RakshitNawani將這個放置在MainActivity或每個片段? –
當您想要隱藏它時,它不會顯示,直到您將其可見性設置爲可見 –