Bry*_*eld 12 android scroll android-layout
我希望有一个linearoutout,顶部有一个标题部分,下面是一个webview.标题会很短,webview可能比屏幕更长更宽.
获得水平和垂直滚动的最佳方法是什么?ScrollView嵌套在HorizontalScrollView中是个好主意吗?
ScrollView嵌套在HorizontalScrollView中是个好主意吗?
是的,不.
是的,我的理解是,ScrollView
并且HorizontalScrollView
可以嵌套.
不,AFAIK,既不合作ScrollView
也不HorizontalScrollView
合作WebView
.
我建议你WebView
适应屏幕.
更进一步,我认为开源社区可能需要你的救援: 2D滚动视图.
编辑:链接不再起作用,但这里是一个旧版博客文章的链接 ;
还有另一种方式.将HorizontalScrollView修改为ScrollView的包装器.正常HorizontalScrollView当catch触摸事件没有将它们转发到ScrollView时你只能在一次滚动.这是解决方案:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
使用:
@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);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18633 次 |
最近记录: |