如何在按钮上精确显示Toast

| 我有各种XML布局。在所有这些布局中,我都有按钮,但是每个布局中按钮的位置都不同。在我的活动中,这些布局会随机膨胀(任何布局都可以成为前台)。因为所有XML布局的内容都是相同的,所以它们有一个共同点,那就是按钮的ID。在每个xml文件中,按钮的区别仅在于(android:layout_marginTop = \“ 145sp \”和android:layout_marginBottom = \“ 45sp \”)。 结果,如果在特定的角落显示名为“ ALI”的按钮,则下次相同的按钮“ ALI”可能在屏幕的另一个角落显示。 现在在我的活动中,我想要它,以便每当我单击按钮时,其相关图像都应以“ 0”的形式显示在按钮上。 但是由于按钮的位置不固定,因此我无法在按钮上精确显示
Toast
。无论按钮位置如何,我得到的“ 0”的位置都是固定的。但我希望将其直接显示在按钮上。 我使用了以下代码。如果有什么方法可以在运行时告诉the3ѭ按钮的像素位置,那会有些方便。 单击按钮事件的代码如下:
button_ALI.setOnClickListener(new View.OnClickListener() {          

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Toast toast = Toast.makeText(getApplicationContext(),\"This is Bat\", Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER, 0, 0);
            LinearLayout toastView = (LinearLayout) toast.getView();
            ImageView imageCodeProject = new ImageView(getApplicationContext());
            imageCodeProject.setImageResource(R.drawable.b_1);
            toastView.addView(imageCodeProject, 0);
            toast.show();
        }
    });
    
已邀请:
        而不是给定int值。...像
toast.setGravity(5,6,5);
并尝试其他值。     
        
toast.setGravity(Gravity.RIGHT |Gravity.TOP, view.getLeft(), view.getTop()+(view.getBottom()-view.getTop())/2);
它应该工作     
        我找到了一个很好的例子。此示例使吐司面包位于接收的视图的中心:
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();
}
有关更多信息,请查看我在以下示例中找到的位置:重新定位Toast消息     

要回复问题请先登录注册