2010-07-01 5 views
0

La meilleure façon de poser cette question est de fournir un exemple, si elle est ici:Calcul de la taille d'une vue

<ScrollView> 
    <LinearLayout 
     android:id="@+id/main" 
     android:orientation="vertical" 
    > 
     <TextView 
      android:id="@+id/some_text" 
     /> 
     <LinearLayout 
      android:id="@+id/stretch_me" 
     /> 
     <Button 
      android:id="@+id/i_can_toggle" 
     /> 
     <TextView 
      android:id="@+id/toggle_me" 
      android:visibility="gone" 
     /> 
     <Button 
      android:id="@+id/finished" 
     /> 
    </LinearLayout> 
</ScrollView> 

Cela semble assez simple, mais tenir sur ...

1) Je voudrais que la disposition stretch_me prenne tout l'espace restant sur l'écran (et j'ai besoin de sa taille pour pouvoir le remplir dynamiquement à partir du code)

2) Je ne peux pas changer main à RelativeLayout parce que je voudrais bascule toggle_me entre gone et visible en utilisant le i_can_toggle mais doit garder la taille strech_me le même que précédemment

3) Avant de changer toggle_me de visible, il doit y avoir aucun défilement et fini bouton doit être placé au bas de l'écran

Maintenant, j'ai essayé beaucoup de choses et l'approche la plus prometteuse est celle-ci avec un peu de codage (je pensais à définir la taille stretch_me du code), mais je n'ai pas pu obtenir la taille de la vue depuis ma méthode onCreate() (screen_height - view_height = espace restant).

Des idées?

Merci!

+0

Une fois que vous avez vues à l'intérieur d'un ScrollView il n'y a vraiment pas un concept utile, « le reste de la taille de l'écran » plus. stretch_me va s'étirer suffisamment pour convenir à tous ses enfants et le ScrollView va permettre le défilement au besoin pour afficher tout le contenu. Êtes-vous sûr de vouloir que cette mise en page entière soit défilable en tant qu'unité unique ou essayez-vous d'épingler des vues en bas de l'écran pendant que le reste du contenu défile dans la zone située au-dessus? – adamp

Répondre

0

Set stretch_me d'avoir ces attributs pour faire prendre l'espace

android:layout_height="fill_parent" 
android:layout_weight="1" 
+0

Qu'est-ce que cela changerait? – LambergaR

+0

Il va avoir la vue mesurée deux fois et remplir l'espace laissé par d'autres vues – ognian

0

Je voudrais que la mise en page de stretch_me à prendre tout l'espace restant sur l'écran

Set les paramètres de taille et de poids à la suivante

android:layout_height="fill_parent" 
android:layout_weight="1" 

J'ai besoin de sa taille

Vous pouvez utiliser onmeasure() pour mesurer la taille de la vue. http://developer.android.com/reference/android/view/View.html#onMeasure(int, int)

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    int widthSpec = MeasureSpec.getMode(widthMeasureSpec); 
    int width = MeasureSpec.getSize(widthMeasureSpec); 
    //Similarly for height 
} 
+0

Je ne pense pas que je peux l'utiliser puisque je l'ai dans un ScrollView – LambergaR

Questions connexes