two directional scroll view

前端 未结 9 1219
野的像风
野的像风 2020-12-09 05:03

I would like to have a linearlayout with a header section on top and a webview below. The header will be short and the webview may be longer and wider than the screen.

相关标签:
9条回答
  • 2020-12-09 06:04

    Two years further down the line I think the open source community might have to your rescue: 2D Scroll View.

    Edit: The Link doesn't work anymore but here is a link to an old version of the blogpost;

    0 讨论(0)
  • 2020-12-09 06:07

    there is another way. moddified HorizontalScrollView as a wrapper for ScrollView. normal HorizontalScrollView when catch touch events don't forward them to ScrollView and you only can scroll one way at time. here is solution:

    package your.package;
    
    import android.widget.HorizontalScrollView;
    import android.widget.ScrollView;
    import android.view.MotionEvent;
    import android.content.Context;
    import android.util.AttributeSet;
    
    public class WScrollView extends HorizontalScrollView
    {
        public ScrollView sv;
        public WScrollView(Context context)
        {
            super(context);
        }
    
        public WScrollView(Context context, AttributeSet attrs)
        {
            super(context, attrs);
        }
    
        public WScrollView(Context context, AttributeSet attrs, int defStyle)
        {
            super(context, attrs, defStyle);
        }
    
        @Override public boolean onTouchEvent(MotionEvent event)
        {
            boolean ret = super.onTouchEvent(event);
            ret = ret | sv.onTouchEvent(event);
            return ret;
      }
    
        @Override public boolean onInterceptTouchEvent(MotionEvent event)
        {
            boolean ret = super.onInterceptTouchEvent(event);
            ret = ret | sv.onInterceptTouchEvent(event);
            return ret;
        }
    }
    

    using:

        @Override public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
    
    /*BIDIRECTIONAL SCROLLVIEW*/
            ScrollView sv = new ScrollView(this);
            WScrollView hsv = new WScrollView(this);
            hsv.sv = sv;
    /*END OF BIDIRECTIONAL SCROLLVIEW*/
    
            RelativeLayout rl = new RelativeLayout(this);
            rl.setBackgroundColor(0xFF0000FF);
            sv.addView(rl, new LayoutParams(500, 500));
            hsv.addView(sv, new LayoutParams(WRAP_CONTENT, MATCH_PARENT /*or FILL_PARENT if API < 8*/));
            setContentView(hsv);
        }
    
    0 讨论(0)
  • 2020-12-09 06:08

    I know you have accepted your answer but may be this could give you some idea.

    <?xml version="1.0" encoding="utf-8"?>
    
    <ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    
    <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <HorizontalScrollView
        android:layout_alignParentBottom="true"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    >
    <ImageView
    
    android:src="@drawable/device_wall"
    android:scaleType="center"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />
    </HorizontalScrollView>
    </RelativeLayout>
    </LinearLayout>
    </ScrollView>
    
    0 讨论(0)
提交回复
热议问题