2011-06-15 87 views
2

我有各种XML布局。在所有这些布局中,我都有按钮,但按钮的位置在每个布局中都不相同。在我的活动中,这些布局随机膨胀(任何布局都可以到达前台)。由于所有XML布局的内容都是相同的,它们有一个共同点,那就是按钮的ID。在每个xml文件中,仅按钮(android:layout_marginTop =“145sp”和android:layout_marginBottom =“45sp”)是不同的。如何正确显示按钮上的吐司

因此,如果名称为“ALI”的按钮显示在特定的角落,下一次可能会在屏幕的另一个角落显示相同的按钮“ALI”。

现在在我的活动中,我希望它能够让我每次点击按钮时,其相关图像都应该以Toast的形式完全显示在按钮上。

但是由于按钮的位置不固定,我无法在按钮上正确显示Toast。我得到的Toast的位置是固定的,与按钮位置无关。但我希望它直接显示在按钮上。

我已经使用了下面的代码。如果在运行时间内有任何方法可以告诉OnClickListener关于按钮的像素位置,那么它会有点方便。

代码是这样的点击按钮事件如下:

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

回答

1

而玩弄给INT值....像toast.setGravity(5,6,5);,也尝试其他值..

+0

先生感谢乌拉圭回合的答复,但这些位置随机变化,所以如果我会改正DESE位置(如你所说)在点击监听器,然后在下一个XML将膨胀的位置,我放我的重力...吐司将充气那里,而不是完全在按钮反正谢谢... – Ali 2011-06-15 09:19:31

+0

谢谢我所有得到回答 – Ali 2011-06-15 09:22:43

+0

这就是为什么我说..尝试给随机值...在某些时候,你会知道哪个坐标做什么..然后你可以精确地... – ngesh 2011-06-15 09:22:50

6
toast.setGravity(Gravity.RIGHT |Gravity.TOP, view.getLeft(), view.getTop()+(view.getBottom()-view.getTop())/2); 

它应该工作

1

我发现了一个可以正常工作的例子。这个例子中心接收到视图敬酒:

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

+0

这将重新定位在父视图中心上的烤面包而不是接收到的视图 – 2014-11-19 04:47:34