android - studio - snackbar implementation




Cómo hacer la modificación de Android Snackbar que contiene el botón LayoutInflater y editText (3)

Debes obtener la identificación de tu Button . Y tiene que configurar clickListener .

Solo tienes que reemplazar tu código con esto.

He puesto listener en btn_mapel , puedes poner cualquier otro botón de acuerdo a tus requerimientos.

Prueba esto.

     @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();

    }

Mi proyecto ahora es cómo hacer que se muestre una Snackbar en la parte inferior de la pantalla. El Snackbar contiene con editText y tres botones para las categorías de selección. Uso LayoutInflater y sigo este código para mi script, y es el trabajo. Mi problema ahora es cómo obtener una respuesta cuando el usuario hace clic en el botón? Aquí mi código

         @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();

        }

y aquí mi diseño de 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>


Prueba esto,

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

        }
    });

aquí está la fuente requerida para implementar el oyente de botones en el diseño personalizado de su 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();

    }




snackbar