2010-10-30 11 views
1

J'ai une mise en page qui contient plusieurs sous-vues dont toutes définies comme la hauteur:Comment récupérer layout_height dans le code

<View android:layout_width="fill_parent" 
    android:layout_height="18dip" 
    android:background="#ff000000" /> 

Comment puis-je récupérer la valeur stockée dans layout_height dans le code? En fin de compte, ce que je voudrais faire, c'est pouvoir ajuster la taille définie dans la mise en page afin que je puisse changer dynamiquement la valeur définie par layout_height en fonction de la résolution de la résolution de l'écran et de la densité de pixels. Est-ce la seule façon de le faire lors du rappel onLayout?

Il serait beaucoup plus facile de redéfinir le XML sur onCreate.

Commentaires, conseils seraient très appréciés.

Merci JY

Répondre

0

Aurait cherché un peu plus loin avant poser une question. Cela fait l'affaire, il semble ...

DisplayMetrics dm = new DisplayMetrics(); 
    this.getWindowManager().getDefaultDisplay().getMetrics(dm); 
    factor_y = (dm.ydpi * dm.heightPixels)/(160 * 480); 
    factor_x = (dm.xdpi * dm.widthPixels)/(160 * 320); 

LinearLayout layout = (LinearLayout) findViewById(R.id.mainlayout); 
for (int i = 0; i < layout.getChildCount(); i++) 
{ 
    View v = layout.getChildAt(i); 
    int height = v.getLayoutParams().height; 
    if (height > 0) 
    { 
     v.getLayoutParams().height = (int) ((float) height * factor_y); 
    } 
    int width = v.getLayoutParams().width; 
    if (width > 0) 
    { 
     v.getLayoutParams().width = (int) ((float) width * factor_x); 
    } 
} 
Questions connexes