Tôi có một listview và khi người dùng nhấn một nút Tôi muốn thu thập tọa độ của nút và đặt một văn bản mà tôi thổi phồng ngay trên đầu nó trên màn hình. Khi người dùng nhấp vào bất cứ nơi nào khác trên màn hình, edittext sẽ biến mất và nó sẽ kích hoạt phương thức sử dụng dữ liệu mà người dùng đã nhập vào hộp. Làm thế nào tôi sẽ đi về làm một cái gì đó như thế này? Tôi muốn một cái gì đó tương tự như QuickActions, nhưng không hoàn toàn như xâm nhập. Ai đó có thể chỉ cho tôi theo hướng ít nhất là làm thế nào để đi về nhận được các tọa độ nút?Phần tử vị trí Android trên màn hình
Trả lời
Ok, vì vậy, đây là cách tôi đã có thể đạt được những gì tôi đang tìm kiếm. Là nó có thể tự động đặt một PopupWindow mà không cần phải gây rối với lợi nhuận điều chỉnh, vv
public void showPopup(View view, View parentView, final int getId, String getLbs){
int pWidth = 100;
int pHeight = 80;
int vHeight = parentView.getHeight(); //The listview rows height.
int[] location = new int[2];
view.getLocationOnScreen(location);
final View pView = inflater.inflate(R.layout.list_popup, null, false);
final PopupWindow pw = new PopupWindow(pView, pWidth, pHeight, false);
pw.setTouchable(true);
pw.setFocusable(true);
pw.setOutsideTouchable(true);
pw.setBackgroundDrawable(new BitmapDrawable());
pw.showAtLocation(view, Gravity.NO_GRAVITY, location[0]-(pWidth/4), location[1]+vHeight);
final EditText input = (EditText)pView.findViewById(R.id.Input);
input.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
Log.i("Focus", "Focus Changed");
if (hasFocus) {
//Shows the keyboard when the EditText is focused.
InputMethodManager inputMgr = (InputMethodManager)RecipeGrainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMgr.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
inputMgr.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT);
}
}
});
input.setText("");
input.requestFocus();
Log.i("Input Has Focus", "" + input.hasFocus());
pw.setOnDismissListener(new OnDismissListener(){
@Override
public void onDismiss() {
changeWeight(getId, Double.parseDouble(input.getText().toString()));
Log.i("View Dismiss", "View Dismissed");
}
});
pw.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
Log.i("Background", "Back Touched");
pw.dismiss();
return true;
}
return false;
}
});
}
Các pWidth và pHeight là kích thước của PopupWindow tôi đã chọn và vHeight là chiều cao của quan điểm cha mẹ chính mà tôi thu thập được từ ngữ cảnh onCreate. Hãy nhớ rằng đây không phải là mã đánh bóng. Tôi vẫn cần phải thêm một vài thứ như animate vào và ra cũng như một mũi tên nhỏ đẹp hoặc một cái gì đó để hiển thị những gì các cửa sổ đang được liên kết với. SetBackgroundDrawable là rất quan trọng và nếu bạn không sử dụng nó, bạn sẽ không thể nhấp vào bên ngoài hộp để đóng nó.
Ngay bây giờ, điều kỳ lạ của nó. Tôi phải bấm hai lần bên ngoài hộp để đóng cửa sổ. Nhấp chuột đầu tiên dường như làm nổi bật hộp văn bản của tôi và nhấp chuột thứ hai thực sự đóng nó. Bất cứ ai có bất kỳ ý tưởng tại sao điều đó có thể xảy ra?
Lộn xộn, tùy thuộc vào thứ bậc Chế độ xem của bạn. Phương thức getLeft() (cùng với getRight, getTop và getBottom) tất cả đều liên quan đến bố mẹ Xem của kiểm soát. Hãy xem getLocationOnScreen và xem nó có làm những gì bạn muốn không.
- 1. Tìm vị trí Xem (vị trí) trên màn hình (màn hình) trong android
- 2. Vị trí tuyệt đối của một phần tử trên màn hình bằng cách sử dụng jQuery
- 3. Vị trí trên màn hình bên phải
- 4. Tìm vị trí tổng hợp trên màn hình
- 5. Vị trí cố định: phần tử tuyệt đối trong phần thừa: phần tử cuộn khi cuộn
- 6. Cách lấy vị trí trên cùng của một phần tử?
- 7. Lấy phần tử tại vị trí đã chỉ định - JavaScript
- 8. Thay đổi vị trí của các Dialog trên màn hình android
- 9. Xoay phần tử dựa trên vị trí con trỏ trong một phần tử riêng biệt
- 10. Cách lấy vị trí của một phần tử trong UIWebView?
- 11. Android: Hoạt hình Xem vị trí
- 12. Android ScrollView cách giữ thành phần trên màn hình khi nó cuộn lên đầu màn hình?
- 13. Làm thế nào để có được vị trí màn hình của các phần tử chuyển đổi CSS3-3d?
- 14. jquery làm thế nào để có được vị trí trên màn hình hiện tại của trang?
- 15. Jquery sửa vị trí div khi div đạt vị trí màn hình, không di chuyển vị trí
- 16. Kiểm tra trong JQuery nếu một phần tử ở trên cùng của màn hình
- 17. Tìm phần tử vị trí thứ n của hình xoắn ốc lát hình chữ nhật?
- 18. Tìm vị trí phần tử trong Java TreeMap
- 19. Vị trí một phần tử liên quan đến phần tử khác trong CSS
- 20. Cách giới hạn vị trí tối đa toàn màn hình cửa sổ dưới cùng trên Windows
- 21. iOS Ảnh chụp màn hình một phần của màn hình
- 22. tìm các phần tử có vị trí: thuộc tính
- 23. Xác định vị trí quấn trong các phần tử nổi
- 24. Di chuyển màn hình đến vị trí nhất định
- 25. Chuyển vị trí của Chế độ xem của Chế độ xem sang vị trí màn hình HTML của WebView
- 26. Hướng dẫn vị trí trên Android GEO
- 27. Lấy vị trí của phần tử bằng javascript
- 28. Phân tích vị trí của phần tử html trong iframe
- 29. Tìm các phần tử theo vị trí offset với jQuery
- 30. Java - nhận vị trí phần tử trong mảng
getLocationOnScreen dường như cung cấp cho tôi toạ độ x và y. Tôi thực sự bị mắc kẹt về cách tăng lượt xem và đặt nó lên màn hình. Ý tưởng nào? – ryandlf
Điều đó phụ thuộc vào ViewGroup cơ bản: nếu bạn đang sử dụng một cái gì đó như LinearLayout hoặc RelativeLayout có thực sự là không có cách nào tốt để làm vị trí tuyệt đối. Những gì bạn có thể thử là làm tăng nó ở vị trí trên cùng bên trái, thiết lập kích thước cho giá trị mong muốn của bạn và sau đó thiết lập lề dựa trên tọa độ x và y để di chuyển nó vào vị trí. Khá lộn xộn, nhưng ... – Femi
Vì vậy, không có phương thức setAtThisLocation (x, y) nào mà tôi có thể sử dụng đối tượng on.a view? Tôi sẽ chơi xung quanh với ý tưởng của bạn và đăng kết quả của tôi. Cảm ơn. – ryandlf