2017-09-02 153 views
-1

使用FloatingActionButton從另一個XML文件,我想用FloatingActionButton在片段類如何在碎片

home.xmlclass Home extends AppCompatActivity

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 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:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="com.azadgh.app.myapplicationtab.Home"> 


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

,這是TabCost:

public class TabCost extends Fragment { 

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

     FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
     return rootView; 
    } 
} 

我如何在TabCost中使用fab

我有三個Tab類似TabCost,我想當我點擊fab在任何標籤顯示不同Snackbar。 我該怎麼辦?

回答

2

那麼,你可以在片段使用:

FloatingActionButton fab =(FloatingActionButton)getActivity().findViewById(R.id.fab) 

正如你所說,你用ViewPager處理片段。您可以將OnPageChangeListener()添加到您的ViewPager並覆蓋其方法:onPageScrollStateChangedonPageScrolled,onPageSelected。 所以,當你選擇任何頁面(在你的情況下,片段),它會被調用,並且在它裏面你可以設置不同的內容Snackbar

@Override 
public onPageSelected(int position) { 
    String contentForSnackbar = "default string"; 
    switch(position){ 
    case 0: 
     contentForSnackbar = "first fragment"; 
     break; 
    case 1: 
     contentForSnackbar = "second fragment"; 
     break; 
    case 2: 
     contentForSnackbar = "third fragment"; 
     break; 
    } 

    fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, contentForSnackbar, Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
} 
+0

我有三個選項卡類似TabCost,我希望當我點擊晶圓廠在任何標籤上顯示的不同勢小吃吧我怎麼能fiexd它 – AzadGh

+0

如何?你是否處理了fragment?'ViewPager'或'FragmentTransaction'?根據每種情況,你可以改變Snackbar的內容,如果它是'ViewPager',那麼你應該有一個具有addOnTabSelectListener()方法的適配器,如果你使用'FragmentTransaction '然後你可以在改變片段時改變內容 – emiraslan

+0

我使用'ViewPager',我沒有undrestand你的答案,請解釋更多, – AzadGh

0

使用此代碼包括cost.xml在home.xml:

<include layout="@layout/cost" /> 
+0

您可以編輯自己的帖子,但投 - 我的職位:( – AzadGh