Подтвердить что ты не робот

Воспроизведение в Android - переход от одного макета к другому

Я прихожу из iOS, где я могу просто просмотреть вид под другим видом. Я пытаюсь выяснить equiv в Android. Я хочу переместить изображение в пару мест в иерархии представлений при нажатии. Что-то вроде:

public boolean onTouchEvent(MotionEvent event) {

    int action = event.getAction();

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

Это упрощенный пример, конечно... но просто пытается выяснить, как переустанавливать представление под другим макетом. Я нашел этот пример поиска, вокруг которого кажется невероятно сложным.

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

4b9b3361

Ответ 1

Если я помню свой прежний опыт работы с iOS, он автоматически удаляет представление из него старым родителем, если вы добавите его в другой (я могу ошибаться;-).

Вот как бы вы сделали то же самое на 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);

Ответ 2

((ViewGroup)view.getParent()).removeView(view);
newContainer.addView(view)