0

我之前在 RL 中使用覆盖视图的片段中使用 XWalkView。

现在我想在 Acitvity 中使用它,但是我遇到了布局渲染问题并且 Snackbar 不再工作了。

在此处输入图像描述

XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".GenerateActivity"
    tools:showIn="@layout/activity_generate">

   <org.xwalk.core.XWalkView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>



   <!--<WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </WebView>-->


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/btn_default"
        android:elevation="4dp"
        android:visibility="visible"
        android:id="@+id/ll_seat_mode_info"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:paddingBottom="5dp"
        android:paddingTop="5dp"
        android:layout_marginTop="16dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="With normal WebView"
            android:textColor="@color/colorAccent" />

    </LinearLayout>

</RelativeLayout>

布局是一个基本活动,这意味着它在一个 CoordinatorLayout 中。

XWalkView 初始化:

public class GenerateActivity extends AppCompatActivity {

    Snackbar snackbar;
    View snackView;
    XWalkView lWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_generate);

        // Toolbar
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        if(toolbar != null) {
            setSupportActionBar(toolbar);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onBackPressed();
                }
            });
        }

         initWebView();

         // Snackbar Code...

    }

    private void initWebView() {
        lWebView = (XWalkView) findViewById(R.id.webView);

        lWebView.clearCache(true);
        File lFile = new File("android_asset/index.html");

        XWalkPreferences.setValue("enable-javascript", true);
        XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, false);

        lWebView.load("file:///" + lFile.getAbsolutePath(), null);
    }

}

依赖:

compile 'org.xwalk:xwalk_core_library:22.52.561.4'

有人知道为什么以及如何解决它吗?

谢谢!

// 编辑

我找到了解决方法。通过在下面添加 1dp 填充一切都很好......我在一个新项目中以同样的方式尝试了 XWalkView 并遇到了同样的问题。可能是图书馆的问题。

4

1 回答 1

0

您没有提供更多关于如何获得XWalkView活动的信息,但我发布了一个示例,您可以从中获得一些知识:

import android.app.Activity;
   import android.os.Bundle;

   import org.xwalk.core.XWalkResourceClient;
   import org.xwalk.core.XWalkUIClient;
   import org.xwalk.core.XWalkView;

   public class MyActivity extends Activity {
       XWalkView mXwalkView;

       class MyResourceClient extends XWalkResourceClient {
           MyResourceClient(XWalkView view) {
               super(view);
           }

           @Override
           WebResourceResponse shouldInterceptLoadRequest(XWalkView view, String url) {
               // Handle it here.
               ...
           }
       }

       class MyUIClient extends XWalkUIClient {
           MyUIClient(XWalkView view) {
               super(view);
           }

           @Override
           void onFullscreenToggled(XWalkView view, String url) {
               // Handle it here.
               ...
           }
       }

       @Override
       protected void onCreate(Bundle savedInstanceState) {
           mXwalkView = new XWalkView(this, null);
           setContentView(mXwalkView);
           mXwalkView.setResourceClient(new MyResourceClient(mXwalkView));
           mXwalkView.setUIClient(new MyUIClient(mXwalkView));
           mXwalkView.load("http://www.google.com", null);
       }

       @Override
       protected void onPause() {
           super.onPause();
           if (mXwalkView != null) {
               mXwalkView.pauseTimers();
               mXwalkView.onHide();
           }
       }

       @Override
       protected void onResume() {
           super.onResume();
           if (mXwalkView != null) {
               mXwalkView.resumeTimers();
               mXwalkView.onShow();
           }
       }

       @Override
       protected void onDestroy() {
           super.onDestroy();
           if (mXwalkView != null) {
               mXwalkView.onDestroy();
           }
       }

       @Override
       protected void onActivityResult(int requestCode, int resultCode, Intent data) {
           if (mXwalkView != null) {
               mXwalkView.onActivityResult(requestCode, resultCode, data);
           }
       }

       @Override
       protected void onNewIntent(Intent intent) {
           if (mXwalkView != null) {
               mXwalkView.onNewIntent(intent);
           }
       }
   }

gradle文件中,您必须添加依赖项,例如:

compile 'org.xwalk:xwalk_core_library:10.39.235.15'
于 2017-01-13T09:21:19.263 回答