私のアプリはウェブサイトのページの内容を表示するWebView
をインスタンス化する必要があります。私のWebViewはタブの画面を埋めるわけではありませんが、携帯電話の画面には鉛を入れません。
それは携帯電話(私はあまりにも様々なHTCのと最近のサムスンで試してみた)と完璧に動作しますが、それはタブレット(ギャラクシータブ、またはASUSのEeeパッドトランスフォーマー)とされていません。代わりに充填画面WebView
が非常に小さく表示されます。
タブに応じて、ビューポートのおよそ25%から50%は塗りつぶされ、残りは空白になります。あたかもFILL_PARENT
の代わりにWRAP_CONTENT
を使用しているかのように見えます。
レイアウト私はこのようなルックスを使用しています:このレイアウトを使用して活動の
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
onCreate()
は次のようになります。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.showdoc); // showdoc is the layout above
// Configuration of the WebView
final WebView webview = (WebView) findViewById(R.id.webview);
final WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
// Callbacks setup
final Context ctx = this;
webview.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(ctx, getResources().getString(R.string.error_web) + description, Toast.LENGTH_LONG).show();
}
});
// Display of the page
webview.loadUrl(getResources().getString(R.string.doc_url) + Locale.getDefault().toString());
}
をマニフェストファイルには、次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true">
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
通常のブラウザで同じURLにアクセスすると、適切に画面を埋める。
下記のスクリーンショットはSamsung Galaxy Tab 10インチエミュレータを使用して作成されましたが、結果は基本的に物理的なEeeパッドトランスフォーマーで同じですが、WebView
は50%小さくなっています。携帯電話では問題ありませんが、WebView
は利用可能なすべての部屋を取ります。風景モードで
マイアプリ:
マイアプリ、ポートレートモードで:
同じURL、同じハードウェア、デフォルトのブラウザで、風景モードで:
同じURL、同じハードウェア、デフォルトブラウザでポートレートモード:
これは設定の問題でなければなりません。
私は失敗したSO FAR試してみましたWHAT:LayoutParamsを強制
私が最初にそれがLayoutParams
問題だと思ったので、私は私のonCreate()
には次のものを追加しようとしたが、と失敗。
// Zoom out
final Display display = getWindowManager().getDefaultDisplay();
final int width = display.getWidth();
final int height = display.getHeight();
webview.setLayoutParams(new LayoutParams(width, height));
- setScrollBarStyle()
は私もthis discussionを見て、その後、webview.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY);
を試してみましたが、しかし、ないか、成功を持つ:それはちょうど何も変わりません。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
あなたはいずれかを持っていますか:私は(下記参照)あなたのフィードバックに、さらに次のようにLayout
を変更しようとしたが、それは何も変更しないのLinearLayout
を使用して
- アイディア? ありがとうございます!
ありがとうKumar。私はマニフェストファイルとスクリーンショットのセットを含めるために投稿を編集しました。 – Shlublu
はい、うまくいきました!私はちょうどAPI 3からAPI 7(それは受け入れられる)に切り替える必要があり、アンドロイドを削除する必要がありました:xlargeScreensはAPI 9で導入されました。 – Shlublu