2016-03-04 83 views
2

我遇到了一些在片段內顯示快餐欄的問題。我可以爲一個活動設置一個罰款,但是當我在一個片段中嘗試時,它不會顯示,也不會出現錯誤。Android顯示片段內的Snackbar

小吃吧內部片段

Snackbar snackbar = Snackbar.make(rootView, "Snackbar test", Snackbar.LENGTH_SHORT); 
View sbView = snackbar.getView(); 
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); 
textView.setTextColor(Color.YELLOW); 
snackbar.show(); 

rootView在片段

rootView = inflater.inflate(R.layout.fragment_possible_recipes, container, false); 

片段XML

<?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" 
android:id="@+id/coordinatorLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"></ListView> 

<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="10dp" 
    android:paddingBottom="50dp" 
    android:src="@drawable/no_result" 
    android:visibility="gone" 
    android:id="@+id/imageview" 
    android:layout_gravity="center"/> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/filterButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentEnd="true" 
    android:layout_gravity="bottom|right" 
    android:layout_marginBottom="63dp" 
    android:layout_marginRight="16dp" 
    android:clickable="true" 
    android:src="@drawable/ic_filter" 
    app:backgroundTint="@color/floatingButton" /> 


</android.support.design.widget.CoordinatorLayout> 

主要活動XML

<android.support.v4.widget.DrawerLayout 
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/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<!-- The main content view --> 

<android.support.design.widget.CoordinatorLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout2"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMode="fixed" 
      app:tabGravity="fill"/> 
    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

    <FrameLayout 
     android:id="@+id/container_body" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

</android.support.design.widget.CoordinatorLayout> 


<fragment 
    android:id="@+id/fragment_navigation_drawer" 
    android:name="com.example.rory.pocketchef.Fragments.FragmentDrawer" 
    android:layout_width="@dimen/nav_drawer_width" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:layout="@layout/fragment_navigation_drawer" 
    tools:layout="@layout/fragment_navigation_drawer" /> 

</android.support.v4.widget.DrawerLayout> 
+0

@ JJSmith我請檢查我的代碼 – saeed

+0

我想你必須在Snackbar.make()中傳遞FloatingActionButton對象而不是rootview。 – Harry

+0

我嘗試了浮動動作按鈕,但同樣的問題仍然 – JJSmith

回答

4

嘗試這種方式

你傳遞一個View這不是一個CoordinatorLayout,直到它找到一個CoordinatorLayout或佈局的根Snackbar會走了樹。

rootlayout = (CoordinatorLayout) rootView.findViewById(R.id.coordinatorLayout); 

Snackbar

Snackbar snackbar = Snackbar.make(rootlayout , "Snackbar test", Snackbar.LENGTH_SHORT); 
          View sbView = snackbar.getView(); 
          TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); 
          textView.setTextColor(Color.YELLOW); 
          snackbar.show(); 
+0

爲repsone Yhanks,但這仍然給與以前一樣的問題 – JJSmith

-1

在片段你可以使用它像下面把小吃吧這種方式,通過把容器

Snackbar snackbar = Snackbar.make(container, "I am Snackbar", Snackbar.LENGTH_LONG); 
snackbar.show(); 
4

你能得到它遠很容易做到。

Snackbar.make(getActivity().findViewById(android.R.id.content), 
      "text to show", Snackbar.LENGTH_LONG).show(); 

這應該在片段內的任何地方工作。

PS。我知道這是舊的,但我留在這裏以備將來參考。