7

Ich versuche, die folgenden ohne Erfolg zu erreichen.Ich habe zwei Materialentwurf Swipe-Registerkarten.I verwendet this library'com.oguzdev: CircularFloatingActionMenu: 1.0. 2 ' FAB zu erreichen, aber wenn ich die Registerkarte auf die zweite Registerkarte wischen, ist der FAB immer noch an das neue Fragment angehängt.Wie Sie die unverankerte Aktion Schaltfläche ausschließlich auf ein Fragment nur in Registerkarte Layout

Ich möchte den FAB auf dem zweiten Fragment verstecken. Gibt es einen Weg, dies zu erreichen?

Antwort

0

Es gibt zwei Situationen, die ich daran denken kann, dies geschieht:

  1. Wenn auf den zweiten Registerkarte bekommen, die vorherige Ansicht, die die FAB-Taste angezeigt wird, nicht entfernt wird, wenn Sie zu Ihrem navigieren zweite Registerkarte, die es dort lässt. Dafür schlage ich vor, in removeAllViews() zu suchen.

  2. Sie erweitern dieselbe XML-Layoutdatei für beide Registerkarten. Wenn Sie möchten, dass die beiden Registerkarten unterschiedlichen Inhalt haben, sollten sie wahrscheinlich unterschiedlich definierte xml-Layout-Dateien haben (in diesem Fall eine, die eine FAB-Schaltfläche erwähnt, eine, die das nicht tut).

Viel Glück!

1

Diese Bibliothek geht davon aus, dass Sie den FAB an Ihre Aktivität anhängen möchten. Die Layout-Parameter, die es generiert, scheinen auch davon auszugehen, dass das übergeordnete Element ein FrameLayout ist. Es ist ein bisschen hacky, aber Sie können es lösen und wieder anbringen, wo Sie wollen, nachdem Sie build() es.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    FrameLayout root = (FrameLayout) inflater.inflate(R.layout.fragment_fab, container, false); 

    FloatingActionButton actionButton = new FloatingActionButton.Builder(getActivity()) 
      .build(); 

    actionButton.detach(); 
    root.addView(actionButton); 

    return root; 
} 
1

Sie könnten meine Antwort hier ansehen: FAB animation with viewpager/tabslider

denke ich, dass vielleicht in etwa das, was Sie suchen, aber Sie werden die Support-Library FAB verwenden müssen, um es zu erreichen.

1

In Ihrer firstfragment.xml müssen Sie die unverankerte Aktionsschaltfläche mithilfe der obigen Bibliothek definieren. Ich denke, du definierst es in deiner Aktivität, die zwei Fragmente hat.

5

Hier ist, was ich für eine ähnliche Art von Problem getan habe. Ich habe ein Koordinator-Layout für das Fragment deklariert. Innerhalb dieses Koordinatorlayouts, wie Sie auf dem Bild sehen können, habe ich einen RecyclerView deklariert, den ich benutze, und darunter habe ich meinen Floating-Action-Button deklariert.

Danach habe ich das Layout für Floating-Aktion in der onCreateView-Fragment-Methode aufgebläht.

Hier ist meine XML-Datei Code:

<android.support.design.widget.CoordinatorLayout 
android:id="@+id/main_content" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:focusableInTouchMode="true"> 

    <EditText 
     android:id="@+id/search_string" 
     android:layout_width="match_parent" 
     android:layout_height="40dp" 
     android:layout_margin="5dp" 
     android:layout_marginTop="50dp" 
     android:hint="Search Keyword" 
     android:drawableLeft="@drawable/search" 
     android:gravity="left" > 
    </EditText> 

<android.support.v7.widget.RecyclerView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/photo_recycler_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginTop="50dp" 
    android:scrollbars="vertical"/> 

<android.support.design.widget.FloatingActionButton 
android:id="@+id/fab" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="bottom|end" 
android:layout_margin="@dimen/fab_margin" 
android:src="@drawable/ic_action_name6" /> 
</android.support.design.widget.CoordinatorLayout> 

Hier mein Java Datei-Code ist:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_photo_list, container, false); 

     FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Photo photo = new Photo(); 
       PhotoLab.get(getActivity()).addPhoto(photo); 
       Intent intent = PhotoPagerActivity.newIntent(getActivity(), photo.getId()); 
       startActivity(intent); 
       /*Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show();*/ 
       } 
     }); 

     mSearchString=(EditText) view.findViewById(R.id.search_string); 
     mPhotoRecyclerView = (RecyclerView) view.findViewById(R.id.photo_recycler_view); 
     mPhotoRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 3)); 

     updateUI(); 
     return view; 
    } 
-1

Wenn Sie es wollen, nur auf ein Fragment sein, dann könnten Sie die FAB hinzufügen auf auf der Fragment-XML-Datei selbst.

Verwandte Themen