2017-02-22 1 views
0

Mon projet est maintenant comment faire un Snackbar affiché au bas de l'écran. Le Snackbar contient avec editText et trois boutons pour les catégories de sélection. J'utilise LayoutInflater et suis ces code pour mon script, et c'est un travail. Mon problème est maintenant, comment obtenir une réponse lorsque l'utilisateur clique sur le bouton? Voici mon codeComment faire une modification Android Snackbar contenant avec le bouton LayoutInflater et editText

  @Override 
     public void onClick(View v) { 

      CoordinatorLayout linearLayout = (CoordinatorLayout)findViewById(R.id.coordinatorLayout); 

      final Snackbar snackbar = Snackbar.make(linearLayout, "", Snackbar.LENGTH_INDEFINITE); 
      Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView(); 

      // Inflate your custom view with an Edit Text 
      LayoutInflater objLayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View snackView = objLayoutInflater.inflate(R.layout.custom_snac_layout, null); 
      // custom_snac_layout is your custom xml 

      layout.addView(snackView, 0); 
      snackbar.show(); 

     } 

et ici ma mise en page snacbar.xml

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<EditText 
    android:layout_marginTop="8dp" 
    android:layout_marginBottom="8dp" 
    android:id="@+id/event_text" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:scrollHorizontally="false" 
    android:hint="@string/type_your_message" 
    android:inputType="textNoSuggestions" 
    android:maxLines="4" 
    android:singleLine="false" 
    android:textSize="18sp" 
    android:paddingLeft="4dp" /> 

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/btn_mapel" 
    android:onClick="mapel" 
    android:layout_gravity="bottom|right" 
    android:layout_marginBottom="@dimen/fab_margin_bottom" 
    android:layout_marginRight="@dimen/fab_margin_right" 
    android:src="@drawable/ic_image_edit" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|right" 
    android:layout_marginBottom="@dimen/fab_margin_bottom" 
    android:layout_marginRight="@dimen/fab_margin_right" 
    android:src="@drawable/ic_image_edit" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|right" 
    android:layout_marginBottom="@dimen/fab_margin_bottom" 
    android:layout_marginRight="@dimen/fab_margin_right" 
    android:src="@drawable/ic_image_edit" /> 
</LinearLayout> 

Répondre

1

est ici la source nécessaire pour mettre en œuvre écouteur bouton à votre mise en page personnalisée snack-bar.

@Override 
    public void onClick(View v) { 

     CoordinatorLayout linearLayout = (CoordinatorLayout)findViewById(R.id.coordinatorLayout); 

     final Snackbar snackbar = Snackbar.make(linearLayout, "", Snackbar.LENGTH_INDEFINITE); 
     Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView(); 

     // Inflate your custom view with an Edit Text 
     LayoutInflater objLayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View snackView = objLayoutInflater.inflate(R.layout.custom_snac_layout, null); 
     // custom_snac_layout is your custom xml 

     // button id for snackbar 
     Button button_mapel = (Button) snackView.findViewById(R.id.btn_mapel); 

     // perform button click listener 
     button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // here perform your button click task 
      } 
     }); 

     layout.addView(snackView, 0); 
     snackbar.show(); 

    } 
+0

Merci beaucoup mon pote. C'est résoudre mon problème, moins d'une heure. –

0

Suivez cette documentation

https://developer.android.com/training/snackbar/action.html

public class MyUndoListener implements View.OnClickListener{ 

    &Override 
    public void onClick(View v) { 

     // Code to undo the user's last action 
    } 
} 

maintenant pour setAction()

Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout), 
           R.string.email_archived, Snackbar.LENGTH_SHORT); 
mySnackbar.setAction(R.string.undo_string, new MyUndoListener()); 
mySnackbar.show(); 
+0

Je ne trouve pas de texte d'édition inclus avec ces exemples, c'est pourquoi j'utilise LayoutInflater. Avoir une autre idée? –

0

Essayez ceci,

Button btn_feed_back = (Button)snackView.findViewById(R.id.feedback); 
    btn_feed_back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     } 
    }); 
0

Vous devez obtenir id de votre Button. Et dois définir clickListener.

Vous devez simplement remplacer votre code par ceci.

J'ai mis l'écouteur sur btn_mapel, vous pouvez mettre n'importe quel autre bouton selon vos besoins.

Essayez ceci.

 @Override 
    public void onClick(View v) { 

     CoordinatorLayout linearLayout = (CoordinatorLayout)findViewById(R.id.coordinatorLayout); 

     final Snackbar snackbar = Snackbar.make(linearLayout, "", Snackbar.LENGTH_INDEFINITE); 
     Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView(); 

     // Inflate your custom view with an Edit Text 
     LayoutInflater objLayoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View snackView = objLayoutInflater.inflate(R.layout.custom_snac_layout, null); 
     // custom_snac_layout is your custom xml 

     Button mapelBt = (Button)snackView.findViewById(R.id.btn_mapel); 

     mapelBt.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      // Get your button click callback here 
     } 
    }); 


     layout.addView(snackView, 0); 
     snackbar.show(); 

    }