Android Webview以编程方式更改显示的网页的方向

时间:2013-01-20 20:20:47

标签: android android-webview

我有一个webview,我希望能够以编程方式更改所显示页面的方向。 当用户通过在我的清单文件中设置此更改手机的方向时,我阻止再次重新创建我的活动。

android:screenOrientation="nosensor"
android:configChanges="orientation|screenSize|keyboardHidden"

但是,在我的某个标签上,我想以编程方式在用户更改网页时更改网页的方向。所以我想听取手机定向的变化并相应地改变页面视图的变化。目前,当手机的方向更改为横向时,网页仍会以纵向显示。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

如果您只想旋转WebView而不想其他任何内容,请创建一个自定义WebView,如下所示:

public class VerticalWebView extends WebView {
    final boolean topDown = true;

    public VerticalWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void draw(Canvas canvas) {
        if (topDown) {
            canvas.translate(getHeight(), 0);
            canvas.rotate(90);
        } else {
            canvas.translate(0, getWidth());
            canvas.rotate(-90);
        }
        canvas.clipRect(0, 0, getWidth(), getHeight(), android.graphics.Region.Op.REPLACE);
        super.draw(canvas);
    }
}

(如果您想以其他方式旋转,请将topDown更改为false)

现在只需在XML中使用它,如下所示:

<com.my.package.VerticalWebView
    android:id="@+id/myview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</com.my.package.VerticalWebView>

请记住,这只是旋转屏幕上显示的视图,任何链接等都无法正常工作,因为它不会将触摸坐标重新映射到相应点的新位置。

答案 1 :(得分:0)