2013-01-22 20 views
8

Pierwszy to wszystko nie jest kompletny kodUstaw dynamiczny pozycję Tosty z widokiem

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

Więc teraz jest problem, chcę, aby wyświetlić tosty obok wyboru, próbowałem pracować z setGravity(), ale to po prostu nie działa i został potrącony i próbuje przez długi czas, ale bez postępu

Jak wyświetlić tosty obok pola wyboru.

Odpowiedz

10

ok, ale w końcu zorientowali się, jak dostać tosty obok wyboru lub innego widoku

1. Musisz dostać lokalizację na ekranie widoku przez

buttonView.getLocationOnScreen(location); 

więcej Reference, zobacz getLocationOnScreen(int[])

2. zestaw grawitacji tosty korzystając

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

ważną rzeczą tutaj jest ustawiony x-coordinate grzanki do prawej widzenia np buttonView.getRight() i dostać współrzędna y od location[1], którą otrzymuje się z 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

Ta odpowiedź http: // stackoverflow .com/a/21026866/630833, bierze pod uwagę rozmiar Toast, co było dla mnie pomocne. – jayeffkay

Powiązane problemy