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

标签 android android-webview

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

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

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

有人可以帮忙吗?

最佳答案

如果您只想旋转 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>

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

关于Android Webview 以编程方式改变显示网页的方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14428850/

相关文章:

android - ImageView 中的 PNG 具有黑色背景

android - 禁用的复选框颜色

android - 如何将 Firebase Auth token 传递给 webView 并在 Android 上注册通知

java - 动态列表从未加载 - 使用 parse.com

java - RxJava 对列表执行操作并返回可观察对象

android - 当我通过 android webview 加载 html 文件时,html 文件中缺少图像

java - Android WebView仅显示在半屏上

android - setAllowUniversalAccessFromFileURLs?

java - Ant 使用 -source 7 或更高版本来启用钻石运算符

java - 要在您的应用程序中查看网页?