1

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

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

但是,在我的一个选项卡上,我想在用户更改网页时以编程方式更改网页的方向。所以我想听听电话方向的变化,并相应地改变页面视图的变化。目前,当手机的方向更改为横向时,网页仍以纵向显示。

有人可以帮忙吗?

4

2 回答 2

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>

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

于 2013-01-20T20:58:11.103 回答
0

当您想更改为横向/纵向时,请尝试此操作。 http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation(int )

于 2013-01-20T20:46:58.130 回答