12

次のコードを使用して FrameLayout を動的に作成しています

mylayout.java

FrameLayout layout = new FrameLayout(this);
FrameLayout.LayoutParams layoutparams=new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT,Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);            
layout.setLayoutParams(layoutparams);

webview=new WebView(this);
webview.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));

splashview=new ImageView(this);
splashview.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));
splashview.setScaleType(ScaleType.FIT_XY);
splashview.setImageResource(R.drawable.splash);
splashview.setVisibility(View.INVISIBLE);

progressbar=new ProgressBar(this);
FrameLayout.LayoutParams params=new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.MATCH_PARENT,Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
progressbar.setLayoutParams(params);
progressbar.setVisibility(View.INVISIBLE);          


layout.addView(webview);
layout.addView(progressbar);
layout.addView(splashview);

setContentView(layout);

mylayout.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center_vertical|center_horizontal"
    android:gravity="center_vertical|center_horizontal" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    </WebView>

<ProgressBar
    android:id="@+id/progressBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical|center_horizontal"
    android:visibility="invisible" />




    <ImageView
        android:id="@+id/splashscreen"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@string/myimg"
        android:scaleType="fitXY"
        android:src="@drawable/splash"
        android:visibility="invisible" />

</FrameLayout>

が必要equalent code for the above xml file in javaです。私はどんな間違いをしましたか?

注: 上記の Java コードを使用すると、それぞれが重複しています。

4

2 に答える 2

5

Android デベロッパー - フレーム レイアウト ドキュメントには次のように書かれています。

通常、FrameLayout は、1 つの子ビューを保持するために使用する必要があります。これは、子ビューが互いに重なり合うことなく、さまざまな画面サイズに拡張できる方法で子ビューを整理することが難しい場合があるためです。ただし、複数の子を FrameLayout に追加し、属性を使用して各子に重力を割り当てることで、FrameLayout 内の位置を制御できandroid:layout_gravityます。

あなたの場合、layout.setForegroundGravity(int)同じために使用することができます。

于 2012-08-10T07:02:58.940 に答える
1

追加

layout.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);

また

layout.setGravity(Gravity.CENTER);

レイアウトの重力を設定するのを忘れました。

于 2012-08-10T06:57:29.523 に答える