Почему addView () сбрасывает мой макет в Android Studio? - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть поток, который вызывает функцию в моей основной деятельности, которая должна добавить изображение к моему макету в определенной позиции. Когда я вызываю свою функцию, все работает правильно, но параметр моего макета (в моем случае поле) сбрасывается, когда явызов:

myLayout.addView(newImage);

Это моя функция, которую вызывает мой поток:

public void createImageAt(Point location) {
    final ImageView newImage = new ImageView(this);

    final RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(90, 90);

    params.leftMargin = location.x;
    params.topMargin = location.y;

    newImage.setImageResource(R.drawable.image);
    newImage.setLayoutParams(params);

    final RelativeLayout myLayout = (RelativeLayout) findViewById(R.id.gameLayout);

    myLayout.post(new Runnable() {
        @Override
        public void run() {
            myLayout.addView(newImage);
        }
    });

}

Моя проблема в том, что мне нужно скользить мой макет, перемещая leftMargin, и когда я вызываю функцию, пишетвыше маржи отскок назад к 0, даже если это было в -200px

1 Ответ

0 голосов
/ 27 ноября 2018

Если проблема в том, что состояние не сохраняется, сделайте newImage глобальной переменной и используйте ее повторно.Просто используйте myLayout.addView(newImage); и myLayout.remove(newImage);

...