如何将文本看法? [英] How to move the text view?

查看:72
本文介绍了如何将文本看法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的TextView和ImageView的帧中的布局,我想随着手指在图像上移动文本。

 <的FrameLayout
     机器人:ID =@ + ID /的FrameLayout
     机器人:layout_marginTop =30dip
     机器人:layout_height =FILL_PARENT
     机器人:layout_width =FILL_PARENT>

     < ImageView的
          机器人:ID =@ + ID / ImageView01
          机器人:layout_height =WRAP_CONTENT
          机器人:layout_width =WRAP_CONTENT/>

    < TextView的机器人:ID =@ + ID / text_view
          机器人:layout_marginTop =30dip
          机器人:layout_width =WRAP_CONTENT
          机器人:MAXLINES =20
          机器人:滚动条=垂直
          机器人:layout_height =WRAP_CONTENT/>

< /的FrameLayout>
 

我尝试了一些code,但它不能正常工作告诉我正确的方式。

 公共布尔onTouch(视图V,MotionEvent事件){

    浮X1 = 0,X2,Y1 = 0,Y2;
    字符串的方向;
    开关(event.getAction()){
            案例(MotionEvent.ACTION_DOWN):
                X1 = event.getX();
                Y1 = event.getY();

                打破;
            案例(MotionEvent.ACTION_UP):{
                X2 = event.getX();
                Y2 = event.getY();
                浮DX = X2-X1;
                浮DY = Y2,Y1;

                    //使用dx和dy来确定方向
                如果(Math.abs(DX)> Math.abs(DY)){
                    如果(DX大于0)方向=右;
                    其他方向=左;
                } 其他 {
                    如果(镝大于0)方向=下;
                    其他方向=上升;
                }
            }

    }
    返回false;
}
 

解决方案

我得到的答案通过此code

  VG =(ViewGroup中)findViewById(R.id.vg);
    vg.setOnTouchListener(新View.OnTouchListener(){

    @覆盖
    公共布尔onTouch(视图V,MotionEvent事件){
       开关(event.getActionMasked())
          {
             案例MotionEvent.ACTION_MOVE:
                 INT X =(INT)event.getX() -  offset_x;
                 INT Y =(INT)event.getY() -  offset_y;
                 INT W = getWindowManager()getDefaultDisplay()的getWidth()。
                 。INT H = getWindowManager()getDefaultDisplay()的getHeight();
                 如果(X GT; w)的
                     X =瓦;
                 如果(Y> H)
                     Y = H;
                 LinearLayout.LayoutParams LP =新LinearLayout.LayoutParams(
                                 新ViewGroup.MarginLayoutParams(
                                 LinearLayout.LayoutParams.FILL_PARENT,
                                 LinearLayout.LayoutParams.FILL_PARENT));
                 lp.setMargins(X,Y,0,0);
                 selected_item.setLayoutParams(LP);
                 打破;
             默认:
                 打破;
          }
       返回true;
    }
 });
   电视=(TextView中)findViewById(R.id.text_view2);
   tv.setOnTouchListener(新View.OnTouchListener(){

   @覆盖
   公共布尔onTouch(视图V,MotionEvent事件){
      开关(event.getActionMasked())
      {
        案例MotionEvent.ACTION_DOWN:
             offset_x =(int)的event.getX();
             offset_y =(int)的event.getY();
             v selected_item =;
             打破;
        默认:
             打破;
      }
      返回false;
   }
   });
}
 

I have textview and imageview in the frame layout, i want move the text along with finger on the image.

<FrameLayout 
     android:id="@+id/framelayout"
     android:layout_marginTop="30dip"
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent">

     <ImageView 
          android:id="@+id/ImageView01"
          android:layout_height="wrap_content" 
          android:layout_width="wrap_content"/>

    <TextView android:id="@+id/text_view"
          android:layout_marginTop="30dip"
          android:layout_width="wrap_content" 
          android:maxLines="20"
          android:scrollbars="vertical"
          android:layout_height="wrap_content"/>

</FrameLayout>

i try some code but it's not working properly tell me the correct way.

    public boolean onTouch(View v, MotionEvent event) {

    float x1 = 0, x2, y1 = 0, y2;
    String direction;
    switch(event.getAction()) {
            case(MotionEvent.ACTION_DOWN):
                x1 = event.getX();
                y1 = event.getY();

                break;
            case(MotionEvent.ACTION_UP): {
                x2 = event.getX();
                y2 = event.getY();
                float dx = x2-x1;
                float dy = y2-y1;

                    // Use dx and dy to determine the direction
                if(Math.abs(dx) > Math.abs(dy)) {
                    if(dx>0) direction = "right";
                    else direction = "left";
                } else {
                    if(dy>0) direction = "down";
                    else direction = "up";
                }
            }

    }
    return false;
}

解决方案

i got answer by using this code

    vg = (ViewGroup)findViewById(R.id.vg);
    vg.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
       switch(event.getActionMasked())
          {
             case MotionEvent.ACTION_MOVE:
                 int x = (int)event.getX() - offset_x;
                 int y = (int)event.getY() - offset_y;
                 int w = getWindowManager().getDefaultDisplay().getWidth();
                 int h = getWindowManager().getDefaultDisplay().getHeight();
                 if(x > w)
                     x = w;
                 if(y > h)
                     y = h;
                 LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                                 new ViewGroup.MarginLayoutParams(
                                 LinearLayout.LayoutParams.FILL_PARENT,
                                 LinearLayout.LayoutParams.FILL_PARENT));
                 lp.setMargins(x, y, 0, 0);
                 selected_item.setLayoutParams(lp);
                 break;
             default:
                 break;
          }
       return true;
    }
 });
   tv = (TextView)findViewById(R.id.text_view2);
   tv.setOnTouchListener(new View.OnTouchListener() {

   @Override
   public boolean onTouch(View v, MotionEvent event) {
      switch(event.getActionMasked())
      {
        case MotionEvent.ACTION_DOWN:
             offset_x = (int)event.getX();
             offset_y = (int)event.getY();
             selected_item = v;
             break;
        default:
             break;
      }                               
      return false;
   }
   });
}    

这篇关于如何将文本看法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆