Изменить маржу макета на каждом туристическом мероприятии

StackOverflow https://stackoverflow.com/questions/6813676

Вопрос

Теперь я хочу изменить верхний край (10 PX вниз в каждом событии Touch) IMG1 в каждом событии Touch. Пока - мой код. Я поместил этот код в событие Touch моей деятельности.

  public static int  count=0;

        int place=-300;
                System.out.println("Count is:"+count);
                if(count>0)
                {
                    LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
                    lp.setMargins(0, place, 0, 0);
                        ImageView imageView=(ImageView)findViewById(R.id.img1);
                    //  MarginLayoutParams marginLayoutParams=new MarginLayoutParams(imageView.getLayoutParams());
                        //marginLayoutParams.setMargins(0, 500, 0, 0);
                        imageView.setLayoutParams(lp);
                        place=place+10;

                }
    count++; 

Теперь маржа изменяется только в одном событии Touch, а не на каждом событии Touch.

Поэтому я хочу, чтобы каждое прикосновение пользователя изображение было на 10 пк

Это было полезно?

Решение

Если для каждого события сенсорного события, выше, выполняется ... локальная переменная «места» будет инициализироваться до -300 каждый раз, следовательно, место = место + 10 всегда будет результатом -290 px, пожалуйста, объявите переменную место на уровне класса, например, ваш счет Анкет Надеюсь, это сработает для вас.

Другие советы

Одна записка здесь, вы заявляете, что ваша переменная «счета» составляет 0 каждый раз, когда вы запускаете событие Touch, если вам интересно, почему это не увеличивается.

То, что вы фактически делаете здесь, - это создание нового ImageView в каждом событии Touch. Вам следует обратиться к одному и тому же изображению, если вы хотите постоянно работать над этим объектом, а не объявлять его каждый раз, когда вы хотите что -то с ним делать.

Попробуйте объявить это в верхней части вашего класса активности:

public ImageView imageView;

Затем вы можете создать его в своем методе Oncreate:

imageView=(ImageView)findViewById(R.id.img1);

И тогда вы можете поработать над этим в своем событии Touch, не объявляя его каждый раз:

   if(count>0)
        {
            LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
            lp.setMargins(0, place, 0, 0);
            //  MarginLayoutParams marginLayoutParams=new MarginLayoutParams(imageView.getLayoutParams());
                //marginLayoutParams.setMargins(0, 500, 0, 0);
                imageView.setLayoutParams(lp); // Note how we havent declared it above.
                place=place+10;

        }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top