我有各种XML布局。在所有这些布局中,我都有按钮,但每个布局中按钮的位置不同。在我的活动中,这些布局随机膨胀(任何布局都可以到达前台)。由于所有XML布局的内容都相同,因此它们有一个共同点,那就是按钮的ID。在每个xml文件中,只有(android:layout_marginTop =“145sp”和android:layout_marginBottom =“45sp”)与按钮不同。
因此,如果在特定角落显示名为“ALI”的按钮,则下次可能会在屏幕的另一角显示相同的按钮“ALI”。
现在,在我的活动中,我想要它,以便每当我点击按钮时,其相关图像应该以{{1}}的形式显示在按钮上。
但由于按钮位置不固定,我无法在按钮上准确显示Toast
。无论按钮位置如何,我得到的Toast
的位置都是固定的。但是我想让它直接显示在按钮上。
我使用了以下代码。如果在运行时有任何方法可以告诉Toast
按钮的像素位置,那么它会有点方便。
单击按钮事件后,代码如下:
OnClickListener
答案 0 :(得分:6)
toast.setGravity(Gravity.RIGHT |Gravity.TOP, view.getLeft(), view.getTop()+(view.getBottom()-view.getTop())/2);
它应该有用
答案 1 :(得分:1)
而是围绕给出值......就像toast.setGravity(5,6,5);
一样,并尝试其他值..
答案 2 :(得分:1)
我找到了一个对我来说很好的例子。此示例将Toast放在收到的视图上:
public void onClick(View v) {
int xOffset = 0, yOffset = 0;
Rect gvr = new Rect();
View parent = (View) v.getParent();
if (parent.getGlobalVisibleRect(gvr)) {
View root = v.getRootView();
int halfwayWidth = root.getRight() / 2;
int halfwayHeight = root.getBottom() / 2;
// get the horizontal center
int parentCenterX = ((gvr.right - gvr.left) / 2) + gvr.left;
// get the vertical center
int parentCenterY = (gvr.bottom - gvr.top) / 2 + gvr.top;
if (parentCenterY <= halfwayHeight) {
yOffset = -(halfwayHeight - parentCenterY);
} else {
yOffset = parentCenterY - halfwayHeight;
}
if (parentCenterX < halfwayWidth) {
// this view is right of center
xOffset = parentCenterX - halfwayWidth;
}
}
Toast toast = Toast.makeText(mContext, "Your String", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, xOffset, yOffset);
toast.show();
}
有关详情,请查看我找到此示例的位置:Repositioning Toast Messages