私は、次のXMLがあります。私が呼ぶときAndroid webviewのレイアウト - 位置を設定するタイミングは?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/rl"
android:background="@color/red"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="10dp"
android:layout_height="10dp" />
</RelativeLayout>
を:
view.layout(50, 50, 1024 - 50, 600 - 50);
のonCreate()からとONSTART()、それは効果がありません。しかし、私はshouldOverrideKeyEvent()に同じ呼び出しを追加し、キーを押すと、動作します。私の設定はXMLのものによって上書きされているからだと思います。ですから、問題は、できるだけ早くlayout()を呼び出す必要がありますが、android:layout_width = "10dp"とandroid:layout_height = "10dp"が既に適用されている場合です。
UPDATE
私はblessenmによるソリューションを使用しています。
private class LayoutListener implements OnGlobalLayoutListener
{
public void onGlobalLayout()
{
Display display = getWindowManager().getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
// Workaround for a 'fill_parent' bug on my tablet (Kindle Fire).
_WebView.layout(0, 0, screenWidth, screenHeight);
_WebView.loadUrl("http://192.168.1.2");
//_Layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
私がremoveGlobalOnLayoutListener()をコメントアウトすると、動作を停止します。デバッガはそれが2回呼び出されたことを示しているので、2番目の呼び出しは実際にサイズを設定するに過ぎないと思います。だから、私はリスナーを削除しないことに決めました(2回呼び出された場合、それはパフォーマンス・キラーではありません)。永久的なボトムバーをクリックするたびに呼び出されて、ツールバーの外観が表示されるようになるまで、それは問題ないと思われました。レイアウトを設定してからサイトをロードするので、毎回リロードされています。また、ビューのサイズが正しい場合にのみサイトをロードする必要があります。これは、サーバーがコンテンツを送信するため、指定されたサイズに対して特別に最適化されているためです。
私はリスナーを離れることができないため、それを削除する必要があります。でもいつ?ちょうど2に数えますか?それはすべてのデバイス/ Androidバージョンで動作しますか?なぜ2番目の呼び出しでは動作しますが、最初の呼び出しでは機能しませんか?
よろしく、
ありがとうございます。あなたのコードに2つのエラーがあるようです。 1.(明白なもの)リスナーはクラスではなくインターフェイスです。あなたはonGlobalLayout()を実装し、オーバーライドしないでください。アノテーションは不要です。 2.理由は分かりませんが、onGlobalLayout()の呼び出しは1つでは不十分です。インスタンスを削除すると、インスタンスは機能しなくなります。私は決してそれを取り除くべきかどうか決定するために呼び出される頻度を見出そうとします。 (そして、もし私がそうしなければならないのなら、おそらく、左/上/右/下が既に私が望んでいるもので、すぐにではない)。 – noober
とにかく、それは働くので、もう一度ありがとう。 – noober
これは2回だけ呼ばれています。リスナーを離れてもいいと思います。 – noober