拖动布局后丢失“滚动”

时间:2013-03-26 10:36:54

标签: android android-layout

我已实现此代码,基本上允许用户在屏幕周围移动布局(仅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,并且完全相同;没有拖动,它的滚动工作。拖动它后,滚动将不再起作用。

1 个答案:

答案 0 :(得分:0)

解决。

是这条线

lParams.bottomMargin = -250;

我刚刚将其删除,现在工作正常。