0

我已经实现了这段代码,它基本上允许用户在屏幕上移动布局(只是 Y 轴):

public class MainActivity extends Activity implements View.OnTouchListener{
TextView _view;
private int _yDelta;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    _view = (TextView) findViewById(R.id.textView2);

    _view.setOnTouchListener(this);

}

public boolean onTouch(View view, MotionEvent event) {
    final int Y = (int) event.getRawY();
    view = (View) view.getParent();
    RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view.getLayoutParams();

    switch (event.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
            _yDelta = Y - lParams.topMargin;
            break;
        case MotionEvent.ACTION_UP:
            break;
        case MotionEvent.ACTION_POINTER_DOWN:
            break;
        case MotionEvent.ACTION_POINTER_UP:
            break;
        case MotionEvent.ACTION_MOVE:
            if (Y - _yDelta < -230 || Y - _yDelta > 160){
              //to avoid view going out of screen
            } else {
                lParams.topMargin = Y - _yDelta;
            }

            lParams.bottomMargin = -250;
            view.setLayoutParams(lParams);
            break;
    }
    return true;
}

}

这是我的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="300px"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/bg" />

<RelativeLayout
    android:id="@+id/draggableContent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/imageView1"
    android:background="#ffffff" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="DRAGMEDRAGME DRAGME DRAGME DRAGME"
        android:textSize="25sp" />

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_below="@id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, it amet, consectetur adipisicing elit, it amet, consectetur adipisicing elit, it amet, consectetur adipisicing elit, it amet, consectetur adipisicing elit, it amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt cillum dolore eu it amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt cillum dolore eu it amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt cillum dolore eu it amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt cillum dolore eu fugiat nulla pariaturcillum dolore eu fugiat nulla pariaturcillum dolore eu fugiat nulla pariaturcillum dolore eu fugiat nulla pariatur ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariaturcillum dolore eu fugiat nulla pariaturcillum dolore eu fugiat nulla pariaturcillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
                android:textSize="18sp" />

        </LinearLayout>
    </ScrollView>

</RelativeLayout>

textView1如果我不拖动“标题”,则可以滚动。当我拖动标题时,整个布局(draggableContent - as view.getParent())会四处移动。但是,当我尝试滚动该 lorem ipsum 时,它不再可滚动。

有没有什么办法解决这一问题?

我试图找到一些像“scrollable = true”这样的参数,但找不到。

谢谢。

编辑 我没有使用布局,而是将其全部替换为 WebView,并且完全一样;无需拖动,它的滚动就可以工作。拖动它后,滚动将不再起作用。

4

1 回答 1

0

解决了。

就是这条线

lParams.bottomMargin = -250;

我刚刚删除了它,它现在运行良好。

于 2013-03-26T11:47:42.247 回答