画面にポップアップ テキストを表示するために使用Toast
すると、デフォルトの位置である画面の下部より少し上にテキストが表示されます。
今、私は自分の選択に応じて、画面の中央またはどこかに表示したいと考えています。
これを達成する方法を教えてもらえますか?
ドキュメントから、
トーストの配置
標準のトースト通知が、画面の下部近くに水平方向に中央に表示されます。
setGravity(int, int, int)
メソッドでこの位置を変更できます 。Gravity
これは、定数、x-position
オフセット、およびオフセットの 3 つのパラメーターを受け入れますy-position
。たとえば、トーストを左上隅に表示することにした場合は、次のように重力を設定できます。
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
位置を右に微調整したい場合は、2 番目のパラメーターの値を増やします。微調整するには、最後のパラメーターの値を増やします。
makeText を呼び出す必要があることを示すエラーが発生した場合は、次のコードで修正できます。
Toast toast= Toast.makeText(getApplicationContext(),
"Your string here", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
以下を使用して、トーストの場所をカスタマイズできます。
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();
}
Toast toast = Toast.makeText(test.this,"bbb", Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
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();
上記のコードは、トーストを画面の中央に表示するか、必要に応じてトーストの重力を設定するための選択に応じて表示するのに役立ちます
注:このプロセスでは、トーストのオブジェクトを使用する必要があります