Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set Dynamic position of Toast to a View?

First of all this is not complete code

@Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    {
        Toast toast=Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0); 
        View view=toast.getView();
        switch(buttonView.getId())
        {
            case R.id.chkRed: if(chkRed.isChecked())
            {   
                              chkGreen.setChecked(false);
                              chkBlue.setChecked(false);
                              chkYellow.setChecked(false);
                              toast.setText("You Selected Red");
                                toast.setGravity(Gravity.NO_GRAVITY,buttonView.getRight(), chkRed.getTop());
                             //top does not align
                             //it align perfectly to right of checkbox
                              view.setBackgroundColor(Color.RED);
            }
                             break;
}
}

So now the problem is that I want to display toast beside checkbox, I tried working with setGravity(), but it just does not workup and have been hit and trying for long time, but with no progress

How to display toast beside the checkbox?

like image 883
Akhil Jain Avatar asked Jan 22 '13 13:01

Akhil Jain


People also ask

How do you change the position of toast?

Positioning your Toast A standard toast notification appears near the bottom of the screen, centered horizontally. You can change this position with the setGravity(int, int, int) method. This accepts three parameters: a Gravity constant, an x-position offset, and a y-position offset.

How do you put toast in the middle of the screen?

makeText(context, "Test", Toast. LENGTH_LONG); toast. setGravity(Gravity. CENTER, 0, 0); toast.

How do I show a toast at a specific time?

show(); toastCountDown. start(); the countdown is used to display a toast message for a specific duration. Save this answer.


1 Answers

ok, i finally figured out how to get toast beside checkbox or another view

1. You need to get location on screen of the view, by

buttonView.getLocationOnScreen(location);

for more Reference, see getLocationOnScreen(int[])

2. Set gravity to toast using

toast.setGravity(Gravity.TOP|Gravity.LEFT,buttonView.getRight()+5, 
location[1]-10);

the important thing here is set x-coordinate of toast to right of view, e.g., buttonView.getRight() and get y-coordinate from the location[1] ,which you get from getLocationOnScreen()

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    {
        Toast toast=Toast.makeText(getApplicationContext(), "", Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0); 
        View view=toast.getView();
        int location[]=new int[2];
        buttonView.getLocationOnScreen(location);
        switch(buttonView.getId())
        {
            case R.id.chkRed: if(chkRed.isChecked())
            {   
                              chkGreen.setChecked(false);
                              chkBlue.setChecked(false);
                              chkYellow.setChecked(false);
                              toast.setText("You Selected Red");
                              toast.setGravity(Gravity.TOP|Gravity.LEFT,buttonView.getRight()+5, location[1]-10);
                              view.setPadding(1, 1, 1, 1);
                              view.setBackgroundColor(Color.RED);
            }

        }
    }
like image 120
Akhil Jain Avatar answered Oct 12 '22 22:10

Akhil Jain