2011-08-26 23 views
6

Soy nuevo en Android.cómo cambiar la altura y el ancho del diseño del marco de forma programática?

que se enfrentan a un problema que es que estoy añadiendo diseño de marcos a mi solicitud el código es

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <FrameLayout android:id="@+id/frameLayout1"> 
     <LinearLayout 
     android:layout_height="wrap_content" 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent"> 
     </LinearLayout> 
    </FrameLayout> 
</LinearLayout> 

Mi problema es que quiero cambiar la altura del diseño de marcos en diferentes orientaciones de la pantalla

el código de ejemplo es

wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); 

      getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

      Log.v("height","height"+wm.getDefaultDisplay().getHeight()); 

      if(wm.getDefaultDisplay().getHeight() <= 427) 
      { 
       Log.v("height","111"); 


((FrameLayout)findViewById(R.id.frameLayout1)).setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); 
     } 
     else 
     { 
      ((FrameLayout)findViewById(R.id.frameLayout1)).setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); 
     } 

Pero da fuerza de cierre,

si alguien tiene una idea por favor ayúdeme.

Gracias de antemano.

Respuesta

0

Una forma es crear una vista personalizada y anular las funciones onLayout y onMeasure. En la función onLayout, puede anular el ancho y el alto. Consulte el ejemplo de la clase LabelView.java here.

3

usted tiene que utilizar LinearLayout.LayoutParams (ancho int, altura int, flotar peso)

FrameLayout frameLayout = new FrameLayout(context); 
LinearLayout.LayoutParams layPra = new LinearLayout.LayoutParams(width,height,mWeight); 
layPra .gravity = Gravity.CENTER | Gravity.BOTTOM; 
frameLayout .setLayoutParams(layPra); 
Cuestiones relacionadas