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ı
18
A
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.
müthiş, şimdiye kadar çalışır, ancak nasıl bir sınır falan var yapabilirim? –
@ БориславМинчев 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
ç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 –