2012-10-11 2 views
0

J'essaie de définir la largeur de mon côté de code LinearLayout. J'essaie de trouver un moyen de dimensionner mon selectedNavigationItem de mon IcsSpinner à la taille de l'élément sélectionné ... quand je mets le linearLayout en xml sur une certaine largeur, c'est réalisé ... mais j'ai besoin d'un dimensionnement dynamique.Définir la largeur de LinearLayout déclarée en XML Programatically

<LinearLayout 
     android:id="@+id/spinner_ll" 
     android:layout_width="75dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" > 

     <com.actionbarsherlock.internal.widget.IcsSpinner 
      android:id="@+id/spinner" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      /> 
    </LinearLayout> 

Y at-il un moyen de définir la largeur de LinearLayout, pas l'enfant?

MISE A JOUR ... REPONSE:

LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)ll.getLayoutParams(); 
lp.width = 85; // set this to size...this is arbitrary number for proof of concept 
ll.requestLayout(); 

Répondre

0

Vous pouvez définir les paramètres de mise en page à partir du code comme ceci:

LinearLayout layout = (LinearLayout) findViewById(R.id.spinner_11); 
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(100 /* in pixels */, LayoutParams.WRAP_CONTENT); 
layout.setLayoutParams(layoutParams); 

Vous pouvez convertir dps en pixels dans le code comme ceci:

int pixelValue = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10 /* in dps */, getResources().getDisplayMetrics()); 

Jetez un oeil à la documentation ici: https://developer.android.com/reference/android/util/TypedValue.html#applyDimension(int, float, android.util.DisplayMetrics)

+0

Cela est presque correct pour ma situation .... Je devais préserver les autres paramètres de mise en page dans mon xml. Par conséquent je dois faire ceci: LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ll.getLayoutParams(); \t \t lp.width = 85; \t \t ll.requestLayout(); – taraloca

+0

Bien sûr, vous pouvez le faire aussi, je gardais simplement simple :) –

Questions connexes