2013-01-22 15 views
8

このすべてのまずトーストのセット動的な位置

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

完全なコードではありませんが今、問題は、私は、チェックボックスの横にトーストを表示したい、ですが、私はsetGravity()で作業しようとしたが、それだけでうまく動作せず、長時間試行されているが、進行中ではない

チェックボックスの横にトーストを表示する方法。

答えて

10

[OK]を、私は最終的にあなたがより多くの参考のために

buttonView.getLocationOnScreen(location); 

により、ビューの画面上の位置を取得する必要がありますどのようにチェックボックスの横にトーストを取得するか、別のビュー

1.考え出し、

を使用してトーストに getLocationOnScreen(int[])

2.セット重力を参照してください0

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

ここで重要なことは、ビューの右、 例えば、buttonView.getRight()に乾杯のx-coordinateに設定されていて、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

この回答をhttpから取得location[1]からy座標を取得:// stackoverflowの.com/a/21026866/630833は、トーストの大きさを考慮に入れてくれました。 – jayeffkay

関連する問題