首先,这不是完整的代码
@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()
,但它只是没有检查并且已经被击中并尝试了很长时间,但没有进展
如何在复选框旁边显示烤面包。
答案 0 :(得分:10)
1。您需要通过
获取视图屏幕上的位置buttonView.getLocationOnScreen(location);
有关更多参考,请参阅getLocationOnScreen(int[])
2. 使用
将重力设置为吐司toast.setGravity(Gravity.TOP|Gravity.LEFT,buttonView.getRight()+5,
location[1]-10);
这里重要的是设置x-coordinate
吐司的权利,
例如,buttonView.getRight()
并从location[1]
得到getLocationOnScreen()
的y坐标,<{1}}
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);
}
}
}