307

画面にポップアップ テキストを表示するために使用Toastすると、デフォルトの位置である画面の下部より少し上にテキストが表示されます。

今、私は自分の選択に応じて、画面の中央またはどこかに表示したいと考えています。

これを達成する方法を教えてもらえますか?

4

13 に答える 13

440

ドキュメントから、

トーストの配置

標準のトースト通知が、画面の下部近くに水平方向に中央に表示されます。setGravity(int, int, int)メソッドでこの位置を変更できます 。Gravityこれは、定数、x-positionオフセット、およびオフセットの 3 つのパラメーターを受け入れます y-position

たとえば、トーストを左上隅に表示することにした場合は、次のように重力を設定できます。

toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);

位置を右に微調整したい場合は、2 番目のパラメーターの値を増やします。微調整するには、最後のパラメーターの値を増やします。

于 2010-03-24T11:04:36.743 に答える
165

makeText を呼び出す必要があることを示すエラーが発生した場合は、次のコードで修正できます。

Toast toast= Toast.makeText(getApplicationContext(), 
"Your string here", Toast.LENGTH_SHORT);  
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
于 2012-09-06T16:24:05.963 に答える
16

以下を使用して、トーストの場所をカスタマイズできます。

setGravity(int gravity, int xOffset, int yOffset)

ドキュメント

これにより、トーストの場所をどこに置くかを非常に具体的にすることができます。

xOffset および yOffset パラメーターの最も便利な点の 1 つは、これらを使用して特定のビューを基準にして Toast を配置できることです。

たとえば、ボタンの上に表示されるカスタム トーストを作成する場合は、次のような関数を作成できます。

// v is the Button view that you want the Toast to appear above 
// and messageId is the id of your string resource for the message

private void displayToastAboveButton(View v, int messageId)
{
    int xOffset = 0;
    int yOffset = 0;
    Rect gvr = new Rect();

    View parent = (View) v.getParent(); 
    int parentHeight = parent.getHeight();

    if (v.getGlobalVisibleRect(gvr)) 
    {       
        View root = v.getRootView();

        int halfWidth = root.getRight() / 2;
        int halfHeight = root.getBottom() / 2;

        int parentCenterX = ((gvr.right - gvr.left) / 2) + gvr.left;

        int parentCenterY = ((gvr.bottom - gvr.top) / 2) + gvr.top;

        if (parentCenterY <= halfHeight) 
        {
            yOffset = -(halfHeight - parentCenterY) - parentHeight;
        }
        else 
        {
            yOffset = (parentCenterY - halfHeight) - parentHeight;
        }

        if (parentCenterX < halfWidth) 
        {         
            xOffset = -(halfWidth - parentCenterX);     
        }   

        if (parentCenterX >= halfWidth) 
        {
            xOffset = parentCenterX - halfWidth;
        }  
    }

    Toast toast = Toast.makeText(getActivity(), messageId, Toast.LENGTH_SHORT);
    toast.setGravity(Gravity.CENTER, xOffset, yOffset);
    toast.show();       
}
于 2014-06-24T03:29:02.923 に答える
12
 Toast toast = Toast.makeText(test.this,"bbb", Toast.LENGTH_LONG);
 toast.setGravity(Gravity.CENTER, 0, 0);
 toast.show();
于 2016-10-14T06:14:50.623 に答える
8
Toast mytoast= Toast.makeText(getApplicationContext(), "Toast Message", 1);  
mytoast.setGravity(Gravity.CENTER_HORIZONTAL, 0, 0);  // for center horizontal
//mytoast.setGravity(Gravity.CENTER_VERTICAL);       // for center vertical 
//mytoast.setGravity(Gravity.TOP);                       // for top
mytoast.show();

上記のコードは、トーストを画面の中央に表示するか、必要に応じてトーストの重力を設定するための選択に応じて表示するのに役立ちます

注:このプロセスでは、トーストのオブジェクトを使用する必要があります

于 2014-06-02T11:17:02.883 に答える