如何将文本看法? [英] How to move the text view?
本文介绍了如何将文本看法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的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屋!
查看全文