如何在Android中更改Toast的位置?

当我使用Toast在屏幕上显示一些popup文本时,它将在屏幕底部上方显示文本,这是默认位置。

现在我想根据我的select将其显示在屏幕中间或某个地方。

任何人都可以指导我如何实现这一目标?

从文档中 ,

定位你的吐司

标准的吐司通知出现在屏幕的底部附近,水平居中。 您可以使用setGravity(int, int, int)方法更改此位置。 这接受三个参数: Gravity常数, x-position偏移量和y-position偏移量。

例如,如果您决定敬酒应该出现在左上angular,您可以像这样设置重力:

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

如果要将位置推向右侧,请增加第二个参数的值。 要轻推它,增加最后一个参数的值。

顺便说一句,如果你得到错误,指出你必须调用makeText,下面的代码使它工作:

 Toast toast= Toast.makeText(getApplicationContext(), "Your string here", Toast.LENGTH_SHORT); toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0); toast.show(); 

您可以使用以下方法自定义Toast的位置:

setGravity(int gravity, int xOffset, int yOffset)

文档

这可以让你在你想要的Toast的位置非常具体。

关于xOffset和yOffset参数最有用的事情之一就是可以使用它们将Toast相对于某个View放置。

例如,如果您想要制作出现在button上的自定义Toast,则可以创build如下所示的函数:

 // 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 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(); 

以上代码将帮助你在屏幕中间显示烤面包或根据你的需要设置吐司重力根据你的需要

注意:对于这个过程你必须使用Toast对象

  Toast toast = Toast.makeText(test.this,"bbb", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show(); 

在topin屏幕上设置吐司

 toast.setView(view); toast.setGravity(Gravity.BOTTOM , 0, 0); // here i am setting toast at bottom toast.setDuration(Toast.LENGTH_LONG); toast.show(); 

现在在底部

  toast.setView(view); toast.setGravity(Gravity.BOTTOM , 0, 0); // here i am setting toast at bottom toast.setDuration(Toast.LENGTH_LONG); toast.show(); 

就像我们可以在左边,右边和中心烤面包一样

点击这里

setGravity(int,int,int)方法接受三个参数:重力常量,x位置偏移量和y位置偏移量。

例如,如果您决定敬酒应该出现在左上angular,您可以像下面那样设置重力: toast.setGravity(Gravity.TOP | Gravity.LEFT,0,0) ;

注意

  • 度量单位是像素
  • 在生成参数的同时,始终保持密度系数。 由于密度因手机而异,因此请确保您将位置值与密度系数相乘。

X位置 :在2维中,Toast的X坐标( 最小值:0

Y位置 :在2维中,Toast的Y坐标( 最小值:0

欲了解更多详情,请查看此链接

改变烤面包的颜色,位置和背景颜色的方法是:

 Toast toast=Toast.makeText(getApplicationContext(),"This is advanced toast",Toast.LENGTH_LONG); toast.setGravity(Gravity.BOTTOM | Gravity.RIGHT,0,0); View view=toast.getView(); TextView view1=(TextView)view.findViewById(android.R.id.message); view1.setTextColor(Color.YELLOW); view.setBackgroundResource(R.color.colorPrimary); toast.show(); 

对于逐行解释: https : //www.youtube.com/watch?v = 5bzhGd1HZOc