2013-01-22 10 views
8

Zunächst dies alles ist nicht vollständig CodeSet Dynamische Position von Toast auf einen Blick

@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 Nun, das Problem ist, ich will neben Checkbox Toast anzuzeigen, versuchte ich die Arbeit mit setGravity(), aber es einfach nicht funktioniert und wurde getroffen und versucht für lange Zeit, aber ohne Fortschritt

Wie Toast neben der Checkbox anzeigen.

Antwort

10

ok, ich, wie endlich heraus Toast neben Checkbox zu erhalten oder eine andere Ansicht

1. Sie benötigen Lage auf dem Bildschirm der Ansicht zu erhalten, von

buttonView.getLocationOnScreen(location); 

für mehr Reference, siehe getLocationOnScreen(int[])

2. Set Schwerkraft auf Toast mit

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

hier das Wichtigste ist x-coordinate Toast nach rechts betrachtet, setzt zB buttonView.getRight() und von den location[1] y-Koordinaten erhalten, die Sie von 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); 
      } 

     } 
    } 
+4

dieser Antwort http erhalten: // Stackoverflow .com/a/21026866/630833, nimmt die Größe von Toast in Betracht, was mir sehr geholfen hat. – jayeffkay