2011-06-15 35 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