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()たが、それはうまくいかず、長い間ヒットして試しましたが、進歩はありません

チェックボックスの横にトーストを表示するにはどうすればよいですか?

4

1 に答える 1

10

わかりました、私は最終的にチェックボックスまたは別のビューの横にトーストを取得する方法を理解しました

1.ビューの画面上の位置を取得する必要があります。

buttonView.getLocationOnScreen(location);

詳細については、 getLocationOnScreen(int [])を参照してください。

2.重力を使用してトーストに設定します

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

ここで重要なのはx-coordinate、トーストをビューの右側に設定することです。たとえば、buttonView.getRight()からy座標location[1]を取得します。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);
            }

        }
    }
于 2013-01-24T03:57:48.473 に答える