View.Frame相当于Android

时间:2015-11-17 23:10:35

标签: android ios xamarin

我已经在number工作了一段时间,并在视图中显示iOS时实现了以下代码。

WebView

我想知道如何在UIView contentView = new UIView(); UIWebView webView = new UIWebView(contentView.Frame); 中编写上述代码。我写了以下内容但收到错误。我是Android的新手。

Android

enter image description here

2 个答案:

答案 0 :(得分:1)

我认为这是对iOS和Android之间差异的误解,以及Xamarin如何支持跨平台C#。两个平台之间的API非常不同,而UIView在概念上与View类似,实际上它们映射到不同的API。 UIView是一个特定于iOS的API,View是一个特定于Android的API,它们都是相应本机控件之上的薄层,并且彼此无关。

我建议您通过一些Xamarin.Android教程来了解Android和iOS之间的差异。

关于错误:

View的构造函数需要通过构造函数提供Context。您可以通过两种方式执行此操作,提供拥有活动或全局应用程序上下文:

// In the scope of an Activity.
View contentView = new View(this); // "this" is the activity reference.

// In another scope...
View contentView = new View(Android.App.Application.Context);

对于第二个错误,WebView没有接受该参数的构造函数。

通过不提供任何内容来修复它:

WebView webView = new WebView();

答案 1 :(得分:1)

以下是如何显示WebView的最小示例。您的Activity的布局XML将是这样的:

import {Component, NgFor} from 'angular2/angular2'

@Component({
  selector: 'my-app',
  directives: [NgFor],
  template: `
    <select #device (change)="onChange($event, device.value)">
      <option *ng-for="#device of devices" [value]="device.id">
        {{ device.label }}
      </option>
    </select>
  `
})
export class App {
  constructor() {
    this.devices = [
      { id: 1, label: 'Nokia'    },
      { id: 2, label: 'Motorola' },
      { id: 3, label: 'iPhone'   }
    ]
  }

  onChange(event, deviceValue) {
    console.log(deviceValue);
  }
}

你的活动代码就是这个......

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <WebView
        android:id="@+id/yourWebView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout

或者,如果您想以编程方式添加WebView,您的Activity代码将如下所示......

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;

public class WebViewActivity extends AppCompatActivity {

    WebView webView;

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

        webView = (WebView) findViewById(R.id.yourWebView);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("http://www.google.com/");
    }
}