2013-08-27 67 views
18

Tôi đang cố tạo một thứ gì đó giống như cửa sổ bật lên, cửa sổ này sẽ xuất hiện khi được nhấp vào một chế độ xem trong một đoạn. Tôi muốn cửa sổ bật lên này hoặc bất cứ thứ gì, để không làm cho mảnh vỡ tối, giống như một Dialog Fragment. Và tôi cũng muốn cửa sổ bật lên được định vị nơi chế độ xem được nhấp. Sẽ tốt nếu nó có hoạt động và bố cục riêng để tôi có thể thực hiện một số thay đổi tùy chỉnh trong đó. Bạn có thể plese chỉ cho tôi một số mã mẫu?Bật lên cửa sổ để hiển thị một số nội dung trong một đoạn

Trả lời

37

Sau đây sẽ hoạt động hoàn hảo phù hợp với đặc điểm kỹ thuật của bạn. Gọi phương pháp này từ bên onClick(View v) của OnClickListener gán cho xem:

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

} 

Các ý kiến ​​nên giải thích này cũng đủ. anchorViewv từ onClick(View v).

+0

tuyệt vời, hoạt động cho đến nay, nhưng làm cách nào để làm cho nó có đường viền hoặc gì đó? –

+1

@ БориславМинчев Vâng, đặt toàn bộ bố cục 'popup' bên trong' FrameLayout' với nền đen. Đặt nền của bố cục 'popup' thành màu trắng và đặt lề là' 2dp'. – Vikram

+0

quá phức tạp: D Tôi đã làm nó với ảnh nền có khung và màu trong suốt như 70%. anyway, các câu trả lời ở trên là những gì tôi muốn cảm ơn bạn –