Android: Obtenir la taille de l'Organisme de Mise en page de façon dynamique
Je veux obtenir la hauteur/largeur de la Moyenne(le Corps), la mise en page dans onCreate() de la méthode.
Mon main.xml est :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_Main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/main_bg11" >
<RelativeLayout
android:id="@+id/rl_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" >
<include layout="@layout/title" />
</RelativeLayout>
<ScrollView
android:id="@+id/svtest"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/rl_music_controller"
android:layout_below="@+id/rl_title" >
<RelativeLayout
android:id="@+id/rl12"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" >
<TableLayout
android:id="@+id/tbl_vandana"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center_horizontal"
android:paddingTop="30dp" >
</TableLayout>
</RelativeLayout>
</ScrollView>
<RelativeLayout
android:id="@+id/rl_music_controller"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
<include layout="@layout/controller" />
</RelativeLayout>
Je suis ajoutant des Textview de façon dynamique dans TableLayout.
id :
- rl_title est mon titre de disposition
- svtest est mon Moyen(Corps) de Contenu.
- rl_music_controller est mon pied de page mise en page.
Je me réfère ce lien. Mais je ne comprends pas exactement ce que je fais?
Avez-Vous essayé cette stackoverflow.com/questions/12068945/... ?
J'ai de l'appareil Hauteur/largeur en utilisant la fonction "Affichage" de la Classe.
Selon Votre question, Vous avez besoin de la taille de svtest mise en page, à droite?
ouais.. Mon concept pour calculer la partie de corps est que : calculer à la fois le titre et pied de page mise en page de la hauteur. Et j'ai Tout l'appareil de la hauteur. Déduire de tout l'appareil de la hauteur. Est-il juste?
Oui, c'est possible, mais à l'aide de lien fourni, Vous pouvez probablement obtenir la taille de svtest mise en page directement.
J'ai de l'appareil Hauteur/largeur en utilisant la fonction "Affichage" de la Classe.
Selon Votre question, Vous avez besoin de la taille de svtest mise en page, à droite?
ouais.. Mon concept pour calculer la partie de corps est que : calculer à la fois le titre et pied de page mise en page de la hauteur. Et j'ai Tout l'appareil de la hauteur. Déduire de tout l'appareil de la hauteur. Est-il juste?
Oui, c'est possible, mais à l'aide de lien fourni, Vous pouvez probablement obtenir la taille de svtest mise en page directement.
OriginalL'auteur Dhruv | 2013-07-09
Vous devez vous connecter pour publier un commentaire.
getWidth()
etgetHeight()
méthodes retourne 0 lorsque les dispositions de la largeur et la hauteur sont définies commematch_parent
etwrap_content
. les dimensions ne sont pas mesurés.Les bonnes méthodes à utiliser pour obtenir des dimensions mesurées sont
getMeasuredWidth()
etgetMeasuredHeight()
.La bonne manière et à l'endroit (extrait peuvent être ajoutés n'importe où, y compris
onCreate
):Quelques réponses essayé de le faire onStart() la méthode. mais, ils ont essayé d'appeler
getWidth()
etgetHeight()
méthodes. EssayezgetMeasuredWidth()
etgetMeasuredHeight()
. il fonctionne sans ajout deOnGlobalLayoutListener
. L'auditeur n'est nécessaire que si vous voulez obtenir les dimensions dans la méthode create. dans un stade ultérieur de l'auditeur n'est pas nécessaire car les dimensions seront mesurés(sur démarrer par exemple).width
etheight
dans la fonction qui appelleaddOnGlobalLayoutListener
afin que je puisse affecter les valeurs d'unPoint
déclaré dans cette fonction?int largeur = scrollView.getMeasuredWidth(); int hauteur = scrollView.getMeasuredHeight(); peut être appelé n'importe où après la méthode onCreate de sorte que vous pouvez les ajouter à votre fonction. c'était le point de OnGlobalLayoutListener
J'appelle
getMeasuredWidth
deonStart
et je reçois toujours0
. LeOnGlobalLayoutListener
est nécessaire.OriginalL'auteur hasan
Tout d'abord, ne pas obtenir de voir les dimensions dans
onCreate()
depuis la vue peut ne pas avoir été initialisé encore. Vous pouvez le faire dans leonStart()
méthode. Tous les points de vue ont été gonflés et disposés sur l'écran à ce point:Êtes-vous en l'appelant dans onStart()? Le scrollview ont gonflé les éléments à l'intérieur d'elle? Si cela n'a rien à l'intérieur, il sera de retour 0.
c'est le point de ceux qui ne fonctionnent pas lors de la largeur et de la hauteur définie comme wrap_content et match_parent
Ce n'est pas de travail. Dans onStart je viens d'obtenir 0 pour quelles que soient les dimensions.
OriginalL'auteur Anup Cowkur
Je trouve surchargeant la méthode suivante empêche la largeur et la hauteur de 0. À ce stade de l'Activité de l'ensemble de la Vue dans l'Activité doit être gonflé.
OriginalL'auteur Phil Applegate