【问题标题】:Change layout margin on every touch event更改每个触摸事件的布局边距
【发布时间】:2011-10-12 10:09:15
【问题描述】:

现在我想在每个触摸事件中更改 img1 的上边距(每个触摸事件向下 10 px)。下面是我的代码。我已将此代码放在我活动的触摸事件中。

  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++; 

现在边距仅在一次触摸事件中更改,而不是在每个触摸事件中更改。

所以我希望用户的每一次触摸图像都应该下降 10 像素

【问题讨论】:

    标签: android layout margin touch-event


    【解决方案1】:

    如果上面代码执行的每个触摸事件...本地“place”变量每次都将初始化为-300,因此place = place + 10将始终导致-290 px,请在类级别声明place变量,例如你的计数变量。希望,这对你有用。

    【讨论】:

      【解决方案2】:

      这里需要注意的是,每次触发触摸事件时,您都将“计数”变量声明为 0,以防您想知道为什么它不增加。

      您在这里有效地做的是在每个触摸事件中创建一个新的 ImageView。如果您想在该对象上始终如一地工作,则应该引用同一个 ImageView,而不是每次您想对它做某事时都声明它。

      尝试在 Activity 类的顶部声明它:

      public ImageView imageView;
      

      然后你可以在你的 onCreate 方法中实例化它:

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

      然后你可以在你的触摸事件中处理它,而不用每次都声明它:

         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;
      
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-04
        相关资源
        最近更新 更多