2015-09-08 5 views
6

Я разрабатываю приложение для Android. В том, что я хочу отобразить структуру дизайна Snackbar в диалоговом окне. Является ли это возможным? Если да, то как?Могу ли я отображать конструкцию материала Закусочная в диалоговом окне?

Пожалуйста, помогите мне.

Спасибо.

+0

технически говоря, это должно быть проблемой. Реальный вопрос: зачем это нужно – Blackbelt

+0

Не думаю, что вы можете использовать Snackbar в диалоговом окне, потому что он всегда отображается в нижней части экрана. Кроме того, вы не должны использовать Snackbar в диалоге, который я должен сказать, потому что это неправильный способ его использования. –

+0

не забудьте принять один из ответов! :) –

ответ

9

Это определенно возможно, вам просто нужно передать вид диалога на SnackBar.

Пример

AlertDialog.Builder mAlertDialogBuilder = new AlertDialog.Builder(this); 
    LayoutInflater inflater = this.getLayoutInflater(); 
    // inflate the custom dialog view 
    final View mDialogView = inflater.inflate(R.layout.dialog_layout, null); 
    // set the View for the AlertDialog 
    mAlertDialogBuilder.setView(mDialogView); 

    Button btn = (Button) mDialogView.findViewById(R.id.dialog_btn); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // Pass the mDialogView to the SnackBar 
      Snackbar 
        .make(mDialogView, "SnackBar in Dialog", Snackbar.LENGTH_LONG) 
        .show(); 
     } 
    }); 
    AlertDialog alertDialog = mAlertDialogBuilder.create(); 
    alertDialog.show(); 

Результат

picture showing result

Примечание: Там нет необходимости использовать CoordinatorLayout как корень. В моем примере я просто использовал LinearLayout в качестве корня.

+0

Swiping SnackBar может быть недоступен, если не используется CoordinatorLayout. –

4

Да, вы можете.

Чтобы показать Snackbar внутри вашего Dialog создать пользовательский View для этого. Вы можете прочитать об этом здесь: Dialogs/Creating a Custom Layout

Тогда для показа Snackbar вызова Snackbar.make((dialogView, "text", duration)) где dialogView ваш пользовательский вид.

0

Если вы используете Dialog тогда:

dialog_share = new Dialog(MainScreen.this, R.style.DialogTheme); 
dialog_share.requestWindowFeature(Window.FEATURE_NO_TITLE); 
LayoutInflater inflater = this.getLayoutInflater(); 
mDialogView = inflater.inflate(R.layout.dialog_share, null); 
dialog_share.setContentView(mDialogView); 
dialog_share.getWindow().setBackgroundDrawableResource(R.color.translucent_black); 
dialog_share.show(); 

public void ShowSnackBarNoInternetOverDialog() { 
     Snackbar snackbar = Snackbar.make(mDialogView, getString(R.string.checkinternet), Snackbar.LENGTH_LONG); 
     snackbar.setActionTextColor(Color.CYAN); 
     snackbar.setAction("OK", new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //Toast.makeText(MainScreen.this, "snackbar OK clicked", Toast.LENGTH_LONG).show(); 
      } 
     }); 
     snackbar.show(); 
    } 
Смежные вопросы