在安卓系统中以编程方式创建布局 - 问题

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>

我需要在Java中找到与上述XML文件等效的代码,我犯了什么错误?

注意:使用上述Java代码,每个都会重叠。


1
我犯了什么错误?-- 你注意到了什么错误? - Andro Selva
2个回答

5
Android开发者 - 框架布局文档中提到:

通常情况下,应该使用FrameLayout来容纳单个子视图,因为组织不同屏幕大小的子视图以避免重叠很困难。但是,您可以向FrameLayout中添加多个子项,并通过为每个子项分配重力来控制它们在FrameLayout中的位置,使用android:layout_gravity属性。

对于您的情况,可以使用layout.setForegroundGravity(int)来实现相同效果。


1

添加

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

或者

layout.setGravity(Gravity.CENTER);

您忘记设置布局的重力。


如果我在框架布局中使用以上代码,会出现“未定义方法”的错误。 - Ponmalar
是的,你说得对...但方法是setForgroundGravity。不管怎样,谢谢你。已点赞。 - Ponmalar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接