2013-08-27 22 views
18

Ben bir pop-up pencere gibi bir şey yapmaya çalışıyorum bazı şeyleri göstermek için pencere aç. Bu pop-up penceresini ya da ne olursa olsun, bir Parçacık Parçası'nın yaptığı gibi parçayı karanlık yapmamayı istiyorum. Ayrıca, pencerenin görünümün tıklandığı yere yerleştirilmesini istiyorum. Kendi aktivitesine ve düzenine sahip olsaydı iyi olurdu, böylece bazı özel değişiklikler yapabilirim. Bana örnek kod gösterebilir misin?bir parçası bir görünüme tıklandığında görünür olacağını, bir parçası

cevap

37

Aşağıdakiler şartnameye uygun olarak mükemmel çalışması gerekir. OnClickListener ait onClick(View v) Görünüm atanan içinden bu yöntemi çağırın:

public void showPopup(View anchorView) { 

    View popupView = getLayoutInflater().inflate(R.layout.popup_layout, null); 

    PopupWindow popupWindow = new PopupWindow(popupView, 
          LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

    // Example: If you have a TextView inside `popup_layout.xml`  
    TextView tv = (TextView) popupView.findViewById(R.id.tv); 

    tv.setText(....); 

    // Initialize more widgets from `popup_layout.xml` 
    .... 
    .... 

    // If the PopupWindow should be focusable 
    popupWindow.setFocusable(true); 

    // If you need the PopupWindow to dismiss when when touched outside 
    popupWindow.setBackgroundDrawable(new ColorDrawable()); 

    int location[] = new int[2]; 

    // Get the View's(the one that was clicked in the Fragment) location 
    anchorView.getLocationOnScreen(location); 

    // Using location, the PopupWindow will be displayed right under anchorView 
    popupWindow.showAtLocation(anchorView, Gravity.NO_GRAVITY, 
            location[0], location[1] + anchorView.getHeight()); 

} 

yorumları bu yeterince iyi açıklamalıdır. anchorView, onClick(View v)'dan v'dur.

+0

müthiş, şimdiye kadar çalışır, ancak nasıl bir sınır falan var yapabilirim? –

+1

@ БориславМинчев Peki, tüm 'popup' düzeni siyah arka plan ile bir' FrameLayout' içinde yerleştirin. 'Popup' düzeninin arka planını beyaza ayarlayın ve 2dp'lik bir kenar boşluğu verin. – Vikram

+0

çok karmaşık: D Bir çerçeve ile arka plan resmi ile yaptım ve iç renk% 70 gibi şeffaf. Her neyse, yukarıdaki cevaplar istediğim şeydi. Teşekkür ederim –

İlgili konular