Search code examples
androidandroid-coordinatorlayoutandroid-snackbar

Why this import static <project-name> .R.id.snackbarView


We added a android.support.design.widget.CoordinatorLayout to the XML file for the Activity that is using a Snackbar. All the Gradle information is correct and the two other corresponding imports are imported minSdk is 19 Support Design is v25.3.1 My question is why is this import happening and have I omitted some setting somewhere?

The original XML code file has a Relative Layout plus other items and the XML for the CoordinatorLayout widget

code for snackbar

    public void showSnackbar(){

    //coordinatorLayout = findViewById(snackbarView);

    //Snackbar snackbar = null;
        final Snackbar snackbar = Snackbar
                .make(findViewById(snackbarView), getText(R.string.snackbar_text),1);
                snackbar.setActionTextColor(Color.RED);
                snackbar.setAction("EXIT", new View.OnClickListener(){

            @Override
            public void onClick(View view) {
                //Intent intent = new Intent(DetailsActivity.this, MainActivity.class);
                //startActivity(intent);
                snackbar.dismiss();
            }
        });

        TextView snackbarActionTextView  = (TextView) snackbar.getView().findViewById( android.support.design.R.id.snackbar_action );
        snackbarActionTextView.setTextSize( 30 );
        snackbarActionTextView.setTypeface(snackbarActionTextView.getTypeface(), Typeface.BOLD);

        TextView snackbarTextView = (TextView) snackbar.getView().findViewById(android.support.design.R.id.snackbar_text);
        snackbarTextView.setTextSize( 30 );
        snackbarTextView.setMaxLines( 3 );
        snackbarTextView.setTextColor(Color.YELLOW);
        snackbar.setDuration(Snackbar.LENGTH_INDEFINITE);
        snackbar.show();

    }

here is my import

  import android.support.design.widget.Snackbar;
  import android.support.v7.app.AppCompatActivity;

Solution

  • James_Duh here is some code that will create a plain Snackbar no Action button and the other method creates a Snackbar with the Action button enjoy Not sure about the import?

        public void onPLAIN(View view){
    
        noActLayout = (CoordinatorLayout)findViewById(R.id.USE_ME_TWICE);
    
        sbNoAct = Snackbar.make(noActLayout,R.string.real_csb_noaction_text,1);// any interger will make it happy
        sbNoAct.setDuration(4000);// 4 sec // OR Snackbar.LENGTH_LONG matters NOT you are setting duration here
    
        View sbView = sbNoAct.getView();
        sbView.setBackgroundColor(ContextCompat.getColor(this, R.color.color_lightBlue));
        TextView textViewNoAct = sbView.findViewById(android.support.design.R.id.snackbar_text);
        //set text color
        textViewNoAct.setTextColor(ContextCompat.getColor(this,R.color.color_White));
        textViewNoAct.setMaxLines(10);
        textViewNoAct.setTextSize(18);
        //increase max lines of text in snackbar. default is 2.
        sbNoAct.show();
    }
    
    public void onWithAct(View view){
    
        myLayout = (CoordinatorLayout) findViewById(R.id.USE_ME_TWICE);
    
        sb = Snackbar.make(myLayout, R.string.real_csb_text, Snackbar.LENGTH_INDEFINITE)
                .setAction(R.string.real_csb_action, myOnClickListener)
                .setActionTextColor(ContextCompat.getColor(context, R.color.color_Red));
    
        View sbView = sb.getView();
        sbView.setBackgroundColor(ContextCompat.getColor(this, R.color.color_White));
        TextView textView = sbView.findViewById(android.support.design.R.id.snackbar_text);
        //set text color
        textView.setTextColor(ContextCompat.getColor(this,R.color.color_deepBlue));
        textView.setTextSize(18);
        //increase max lines of text in snackbar. default is 2.
        textView.setMaxLines(10);
        // NOTE new View
        TextView textAction = sbView.findViewById(android.support.design.R.id.snackbar_action);
        //set Action text color
        textAction.setTextColor(ContextCompat.getColor(this,R.color.color_Red));
        textAction.setTextSize(18);
        sb.show();
    }
        View.OnClickListener myOnClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //sb.dismiss();
                System.out.println("=== I WAS DISMISSED OR SENT TO MainActivity===");
                // OR use and Intent to go somewhere have a nice trip
                Intent intent = new Intent(PageThreeActivity.this, MainActivity.class);
                startActivity(intent);
            }
        };
    }