Java 仅上下拖动线性布局
我需要能够拖动一个线性布局包含一个文本视图上下 线性布局是一个亲戚的孩子 这是我的布局文件:Java 仅上下拖动线性布局,java,android,android-layout,drag-and-drop,android-linearlayout,Java,Android,Android Layout,Drag And Drop,Android Linearlayout,我需要能够拖动一个线性布局包含一个文本视图上下 线性布局是一个亲戚的孩子 这是我的布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/drag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#55000000"
>
<TextView
android:id="@+id/display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="30sp"
android:textColor="#fff"
android:textStyle="bold"
android:layout_gravity="center"
android:text="The Quick Brown Fox Jumped!!"
android:padding="15dp"
/>
</LinearLayout>
</RelativeLayout>
我不知道如何做到这一点。我从网上的一个教程中复制了拖放代码…..我以前没有弄乱过这个,你也没有说问题,但我现在假设你可以在各个方向拖动它,而你只希望它可以在垂直轴上拖动 也就是说,我正在浏览你的代码,看到很多地方x轴发生了变化。无论左边距在哪里更改,代码都会在水平轴上移动 试试这个,看看这是否符合您的要求:
@Override
public boolean onTouch(final View v,final MotionEvent event)
{
final FrameLayout.LayoutParams par=(FrameLayout.LayoutParams)v.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:
{
par.topMargin+=(int)event.getRawY()-prevY;
prevY=(int)event.getRawY();
v.setLayoutParams(par);
return true;
}
case MotionEvent.ACTION_UP:
{
par.topMargin+=(int)event.getRawY()-prevY;
v.setLayoutParams(par);
return true;
}
case MotionEvent.ACTION_DOWN:
{
prevY=(int)event.getRawY();
par.bottomMargin=-2*v.getHeight();
v.setLayoutParams(par);
return true;
}
}
return false;
}
让我知道这对你是否有效,
约瑟夫·梅多斯
@Override
public boolean onTouch(final View v,final MotionEvent event)
{
final FrameLayout.LayoutParams par=(FrameLayout.LayoutParams)v.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_MOVE:
{
par.topMargin+=(int)event.getRawY()-prevY;
prevY=(int)event.getRawY();
v.setLayoutParams(par);
return true;
}
case MotionEvent.ACTION_UP:
{
par.topMargin+=(int)event.getRawY()-prevY;
v.setLayoutParams(par);
return true;
}
case MotionEvent.ACTION_DOWN:
{
prevY=(int)event.getRawY();
par.bottomMargin=-2*v.getHeight();
v.setLayoutParams(par);
return true;
}
}
return false;
}