2012-08-10 12 views
8

estoy creando FrameLayout dinámicamente usando el siguiente códigocrear un diseño mediante programación en Android - tema

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> 

necesito el equalent code for the above xml file in java. ¿Qué error hice?

Nota: Usando el código java anterior, cada uno se superpone.

+1

¿Qué error cometí? - ¿Qué error notaste? –

Respuesta

3

Android Developer - Frame Layout Documentation lee:

En general, FrameLayout deben utilizarse para sostener una sola vista del niño, ya que puede ser difícil de organizar puntos de vista del niño de una manera que es escalable para diferentes tamaños de pantalla sin los niños se superponen entre sí. Sin embargo, puede agregar varios elementos secundarios a FrameLayout y controlar su posición dentro de FrameLayout asignando gravedad a cada elemento secundario, utilizando el atributo android:layout_gravity.

En su caso, puede usar layout.setForegroundGravity(int) para lo mismo.

1

Añadir

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

o

layout.setGravity(Gravity.CENTER); 

se le olvidó preparar la gravedad de la disposición.

+0

si utilizo el código anterior para el diseño de Framwork, mostrando un error como "método indefinido" – Ponmalar

+0

Sí, tiene razón ... pero el método es setForgroundGravity. Gracias de todas formas. Renunciando – Ponmalar

Cuestiones relacionadas