我是个新手,水平有限,写这个博文,更多是总结自己的问题,可能帮助不到别人什么,还请见谅。
事情是老板要求实在一个能够随手指移动的edittext,网上到处查找,到处实验,最后得出两种可行的方案:
方案1:
在Activity的xml里添加一个FrameLayout,里面还有个LinearLayout,再里面有editext,xml属性如下:
<FrameLayout
android:id="@+id/edwordsLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_margin="15dp"
android:orientation="horizontal" >
<EditText
android:id="@+id/edmyWords"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="5dp"
android:background="@drawable/ic_img_text_bg" />
</LinearLayout>
</FrameLayout>
Activity的代码里实现onTouchEvent(MotionEvent event)方法,在这里获取手指实时点击的坐标点,然后更新LinearLayout的所在位置:
//让包含edittext的linearlayout随手指的移动而改变位置
container.scrollBy(edtextX - x2, edtextY - y2);
这样就行了。
方案2:
直接自定义一个editext类,在初始化里让这个editext实现OnTouchListener,通过实时监听手指移动的坐标,更新editext所在的位置:
meText.setX(event.getRawX() - editX);
meText.setY(event.getRawY() - meText.getHeight() - editY);
方案1demo地址:
http://download.csdn.net/detail/u014436704/8612517
方案2java类地址:
http://download.csdn.net/detail/u014436704/8612551