2017-09-18 2 views
3

J'ai affiché Snackbar en utilisant CoordinatorLayout mais dans une certaine disposition, je n'ai pas utilisé la disposition CoordinatorLayout et je veux afficher le snackbar mais j'ai rencontré des problèmes avec.Affichage Snackbar sans CoordinatorLayout

J'ai essayé la méthode suivante pour obtenir une barre de collation sans CoordinatorLayout mais elle affichera le résultat suivant.

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

enter image description here

test avec Android 8.0 Oreo

Est-il possible d'atteindre sans CoordinatorLayout Snack-bar?

Merci d'avance.

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); 
    } 
} 

Répondre

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); 
} 

Il suffit d'appeler la méthode ci-dessus et passer une mise en page de parents tels que LinearLayout, RelativeLayout ou ScrollView, par exemple:

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

Ne pas oublier de trouver votre point de vue en utilisant findViewById().

+0

d'abord merci pour la réponse je l'ai essayé, mais il donnera erreur suivant Aucun parent approprié trouvé de la vue donnée. S'il vous plaît fournir une vue valide. –

+0

@NileshPanchal dans mon cas, il travaille pour n'importe quelle vue, je viens de mettre ce code dans ma classe Utils et appelé cette méthode, et ça fonctionne comme charme –

+0

@NileshPanchal avez-vous fournir et trouver votre parent vue avec id ?? –

4

Essayez cette pièce facile de code ..

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

+0

J'essayais de montrer un snack dans une classe d'adaptateur, cela a fonctionné parfaitement puisque tout ce que j'ai passé à mon adaptateur est Context. – Manny265