Как показать Snackbar при запуске активности?

Я хочу показать android Snackbar (android.support.design.widget.Snackbar) когда активность начинается так же, как мы показываем Toast.

но проблема в том, что мы должны указать компоновку родителя при создании Snackbar такой:

Snackbar.make(parentlayout, "This is main activity", Snackbar.LENGTH_LONG)
            .setAction("CLOSE", new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                }
            })
            .setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
            .show();

как дать Родительский макет, когда мы показываем Snackbar в начале действия без каких-либо событий щелчка (если это было событие щелчка, мы могли бы легко передать родительское представление)?

5 ответов


просто укажите на любой View внутри Activity's XML-файле. Например, вы можете дать id корневой viewGroup и использовать:

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);    
   setContentView(R.layout.main_activity);
   View parentLayout = findViewById(android.R.id.content);
   Snackbar.make(parentLayout, "This is main activity", Snackbar.LENGTH_LONG) 
        .setAction("CLOSE", new View.OnClickListener() {
            @Override 
            public void onClick(View view) {

            } 
        }) 
        .setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
        .show(); 
   //Other stuff in OnCreate();
}

у меня были проблемы с отображением Snackbar до сих пор. Вот самый простой способ отображения Snackbar. Чтобы отобразить его в начале основной деятельности, просто поместите эти две строки в свой OnCreate()

    Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "Welcome To Main Activity", Snackbar.LENGTH_LONG);
    snackbar.show();

П. С. Просто убедитесь, что вы импортировали дизайн поддержка Android.(Как упоминалось в вопросе).


вызовите этот метод в onCreate

Snackbar snack = Snackbar.make(
                    (((Activity) context).findViewById(android.R.id.content)),
                    message + "", Snackbar.LENGTH_SHORT);
snack.setDuration(Snackbar.LENGTH_INDEFINITE);//change Duration as you need
            //snack.setAction(actionButton, new View.OnClickListener());//add your own listener
            View view = snack.getView();
            TextView tv = (TextView) view
                    .findViewById(android.support.design.R.id.snackbar_text);
            tv.setTextColor(Color.WHITE);//change textColor

            TextView tvAction = (TextView) view
                    .findViewById(android.support.design.R.id.snackbar_action);
            tvAction.setTextSize(16);
            tvAction.setTextColor(Color.WHITE);

            snack.show();

вы можете попробовать эту библиотеку. Это обертка для Android по умолчанию закусочной. https://github.com/ChathuraHettiarachchi/CSnackBar

Snackbar.with(this,null)
    .type(Type.SUCCESS)
    .message("Profile updated successfully!")
    .duration(Duration.SHORT)
    .show();

Это содержит несколько типов snackbar и даже customview интегрированной snackbar


попробуй такое

Snackbar.make(findViewById(android.R.id.content), "Got the Result", Snackbar.LENGTH_LONG)
                        .setAction("Submit", mOnClickListener)
                        .setActionTextColor(Color.RED)
                        .show();