设置Toast到视图的动态位置

Akh*_*ain 8 checkbox events android toast

首先,这不是完整的代码

@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;
}
}
Run Code Online (Sandbox Code Playgroud)

所以现在,问题是,我想在复选框旁边显示烤面包,我尝试使用setGravity(),但它只是没有进行操作并且已经被击中并尝试了很长时间,但没有进展

如何在复选框旁边显示吐司.

Akh*_*ain 10

好吧,我终于想出了如何在复选框或其他视图旁边烤面包片

1.您需要在视图的屏幕上获取位置

buttonView.getLocationOnScreen(location);
Run Code Online (Sandbox Code Playgroud)

有关更多参考,请参阅getLocationOnScreen(int [])

2.使用重力设置吐司

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

这里重要的是x-coordinate向视图右侧设置吐司,例如,buttonView.getRight()location[1]你得到的y坐标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);
            }

        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 这个答案http://stackoverflow.com/a/21026866/630833,考虑了Toast的大小,这对我很有帮助. (4认同)