2017-09-18 4 views
3

Ich habe Snackbar mit CoordinatorLayout angezeigt, aber in einigen Layout habe ich CoordinatorLayout Layout nicht verwendet und ich möchte Snackbar anzeigen, aber Problem damit konfrontiert.Display Snackbar ohne CoordinatorLayout

Ich habe folgenden Weg versucht, Snackbar ohne CoordinatorLayout zu erreichen, aber es wird folgendes Ergebnis angezeigt.

Snackbar.make(getActivity().getWindow().getDecorView().getRootView(), "Testing Snackbar", Snackbar.LENGTH_LONG).show(); 

enter image description here

Testen Sie es mit Android 8.0 Oreo

Gibt es eine Möglichkeit, ohne Snackbar CoordinatorLayout zu erreichen?

Vielen Dank im Voraus.

Code

public class FirstFragment extends Fragment { 

RelativeLayout rootView; 

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

     Log.e("onCreateView", "onCreateView"); 

     rootView = (RelativeLayout)view.findViewById(R.id.rootView); 
     setSnackBar(rootView, "Testing with answered"); 
     return view; 
    } 

public static void setSnackBar(View coordinatorLayout, String snackTitle) { 
     Snackbar snackbar = Snackbar.make(coordinatorLayout, snackTitle, Snackbar.LENGTH_SHORT); 
     snackbar.show(); 
     View view = snackbar.getView(); 
     TextView txtv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text); 
     txtv.setGravity(Gravity.CENTER_HORIZONTAL); 
    } 
} 

Antwort

6
public static void setSnackBar(View coordinatorLayout, String snackTitle) { 
    Snackbar snackbar = Snackbar.make(coordinatorLayout, snackTitle, Snackbar.LENGTH_SHORT); 
    snackbar.show(); 
    View view = snackbar.getView(); 
    TextView txtv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text); 
    txtv.setGravity(Gravity.CENTER_HORIZONTAL); 
} 

einfach das obige Methode aufrufen und alle Eltern Layout passieren wie LinearLayout, RelativeLayout oder ScrollView, zum Beispiel:

setSnackBar(layout,"This is your SnackBar"); //here "layout" is your parentView in a layout 

Vergessen Sie nicht, Ihre Ansicht zu finden mit findViewById().

+0

Erstmal Danke für die Antwort habe ich versucht, aber es gibt von der gegebenen Ansicht gefunden Keine geeignet Eltern folgende Fehlern. Bitte geben Sie eine gültige Ansicht an. –

+0

@NileshPanchal in meinem Fall funktioniert es für jede Ansicht, ich habe gerade diesen Code in meine Utils-Klasse und nannte diese Methode, und es funktioniert wie Charme –

+0

@NileshPanchal haben Sie bieten und finden Sie Ihre Elternansicht mit ID? –

4

Versuchen Sie dieses einfache Stück Code ..

Snackbar.make(findViewById(android.R.id.content),"Your Text Here",Snackbar.LENGTH_SHORT).show();

+0

Ich habe versucht, eine Snackbar in einer Adapterklasse zu zeigen, das funktionierte perfekt, da alles, was ich an meinen Adapter übergab, Context ist. – Manny265

Verwandte Themen