2011-10-08 35 views
20

Tôi đến từ iOS nơi tôi có thể chỉ sửa lại chế độ xem trong chế độ xem khác. Tôi đang cố gắng tìm ra equiv trong Android. Tôi muốn di chuyển hình ảnh lên một vài điểm trong cấu trúc phân cấp của khung nhìn khi được nhấp. Một cái gì đó như:Sửa lại chế độ xem trong Android - di chuyển từ một bố cục này sang một bố cục khác

public boolean onTouchEvent(MotionEvent event) { 

    int action = event.getAction(); 

    //Tile touchBegan 
    if(action == MotionEvent.ACTION_DOWN) { 
     RelativeLayout rl = (RelativeLayout)(getParent().getParent()); 
     rl.addView(this); 
    } 
} 

Đây là một ví dụ đơn giản, tất nhiên .. nhưng chỉ cố gắng tìm hiểu cách bố mẹ trong chế độ xem khác. Tôi tìm thấy ví dụ này tìm kiếm xung quanh mà dường như vô cùng phức tạp ..

http://blahti.wordpress.com/2011/02/10/moving-views-part-3/

+0

Đối với bất cứ ai googling để ở đây: nếu bạn cần để giữ vị trí tương đương, có thể mã ví dụ của tôi trả lời dưới đây sẽ giúp. – Fattie

Trả lời

31

Nếu tôi nhớ kinh nghiệm iOS cũ của tôi đúng nó loại bỏ quan điểm từ đó là cha mẹ già tự động nếu bạn thêm nó vào nhau (Tôi có thể sai ;-).

Đây là cách bạn sẽ làm điều tương tự trên android:

ViewGroup parent = (ViewGroup) yourChildView.getParent();  

if (parent != null) { 
    // detach the child from parent or you get an exception if you try 
    // to add it to another one 
    parent.removeView(yourChildView); 
} 

// you might have to update the layout parameters on your child 
// for example if your child was attached to a RelativeLayout before 
// and you add it to a LinearLayout now 
// this seems very odd coming from iOS but iOS doesn't support layout 
// management, so... 
LinearLayout.LayoutParams params = new LinearLayout.LayoutP... 
yourChildView.setLayoutParams(params); 

yourNewParent.addView(yourChildView); 
+0

Cảm ơn bạn đã trợ giúp, Tính năng này hiện đang hoạt động cho tôi! Có vẻ quá dễ dàng, tôi nghĩ tôi đã thử điều này. Tôi nghĩ rằng tôi đã được đúc phụ huynh để loại bố trí của tôi RelativeLayout .. có lẽ đó là gây ra vấn đề của tôi. – Daniel

+1

Giải thích tuyệt vời cho chúng tôi nhầm lẫn iOSers! cảm ơn! – Fattie

7
((ViewGroup)view.getParent()).removeView(view); 
newContainer.addView(view) 
Các vấn đề liên quan