2013-01-22 15 views
8

Prima di tutto questo non è il codice completoimpostare la posizione dinamica di Toast per una visualizzazione

@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; 
} 
} 

Così Ora, il problema è, voglio visualizzare brindisi accanto casella di controllo, ho provato a lavorare con setGravity(), ma semplicemente non funziona e è stato colpito e provato per molto tempo, ma senza progressi

Come visualizzare il pane tostato accanto alla casella di controllo.

risposta

10

ok, ho finalmente capito come ottenere brindisi accanto casella di controllo o un'altra vista

1. È necessario per ottenere la posizione sullo schermo della vista, da

buttonView.getLocationOnScreen(location); 

per più di riferimento, vedi getLocationOnScreen(int[])

2. Set gravità per brindare con

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

la cosa importante qui è impostato x-coordinate di pane tostato a destra di vista, ad esempio , buttonView.getRight() e ottenere coordinata y dal location[1], che si ottiene dal 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

Questa risposta http: // StackOverflow .com/a/21026866/630833, prende in considerazione la dimensione di Toast, che mi è stata utile. – jayeffkay

Problemi correlati