2014-09-19 3 views
0

Je suis nouveau développement Android, et j'ai une question sur obtenir la largeur de View dans Android. Je jeu de poids de vue = 1Obtenir le poids en android

<TextView 
     android:id="@+id/tvSTT" 
     android:layout_width="0dp" 
     android:layout_weight="1dp" 
     android:layout_height="match_parent"/> 

Et j'essaie de trouver moyen d'obtenir la largeur de ce dans le code java. Comment dois-je faire? Désolé pour mon anglais.

+1

Documenation: [getWidth()] (http://developer.android.com/reference/android/view/View.html#getWidth()) –

+0

Merci Sagar Pilkhwal, mais quand j'appelle getWidth(), il renvoie 0. –

+2

'layout_weight' n'a pas d'unité. Autrement dit, supprimez le 'dp'. –

Répondre

0

Votre TextView va obtenir une largeur au moment c'est dessiné. Avant ce moment, on ne sait pas quelle sera sa largeur réelle (à cause de la taille de l'écran). Vous pouvez ajouter un OnGlobalLayoutListener au viewTreeObserver pour être averti quand il est dessiné. Vous pouvez effectuer getWidth() dans l'écouteur et il ne devrait plus être 0.

Ajouter un OnGlobalLayoutListener comme si

final TextView tvSTTtextView = (TextView)findViewById(R.id.tvSTT); 
    textView.getViewTreeObserver().addOnGlobalFocusChangeListener(new ViewTreeObserver.OnGlobalFocusChangeListener() { 
     @Override 
     public void onGlobalFocusChanged(View view, View view2) { 
      int width = tvSTTtextView.getWidth(); //width should not be 0 
     } 
    }); 
0
@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    // TODO Auto-generated method stub 
    super.onWindowFocusChanged(hasFocus); 
    //Here you can get the width! use `getWidth()` 
} 
0

Vous devez obtenir les params de mise en page de vue et de le jeter à TableLayout.LayoutParams, on vous l'avez, vous pouvez accéder au poids de vue

((TableLayout.LayoutParams) view.getLayoutParams()).weight;// this is the weight 
Questions connexes