Je veux trouver la position de la vue sur l'écran d'affichage.
Pour le faire, j'utilise les méthodes telles que Ma mise en page View.getft () code>,
vue.getbottom () code>,
vue.GetRight () code >,
vue.gettop () code>. Mais malheureusement, toutes ces méthodes sont retournées
0 code>.
Y a-t-il un moyen alternatif de trouver les positions de la vue (c.-à-d. Coordonnées à l'écran)? P> main.xml code>: p>
Oncreate () Code>: P>
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv1 = (TextView) findViewById(R.id.tv1);
tv2 = (TextView) findViewById(R.id.tv2);
System.out.println("tv4 width:"+tv2.getWidth());
System.out.println("tv4 height:"+tv2.getHeight());
System.out.println("Right:"+tv2.getRight());
System.out.println("Left:"+tv2.getLeft());
System.out.println("Top:"+tv2.getTop());
System.out.println("Bottom:"+tv2.getBottom());
5 Réponses :
Je ne suis pas sûr que vous puissiez obtenir la position de la vue avant que la phase de mise en page ait été effectuée. Une fois que la vue est posée, vous pouvez utiliser getLocationVendoncreen code> pour obtenir la position de la vue.
gettop code> et similaire ne renvoie que la position de la vue dans son parent. P>
Utilisez le getleft () code>,
getdright () code>,
gettop () code> et
getbottom () code>. Ceux-ci peuvent être utilisés après la vue instanciée. P>
Ces méthodes donnent la position de vue par rapport à B> Son parent.
@Ilkinulas alors quelle est la solution pour le par rapport à l'appareil?
Vous ne pouvez vraiment pas obtenir la vue avant la main. Vous voudrez peut-être effectuer une application explicite à l'aide de Si vous essayez simplement des choses et que vous voulez vous amuser avec des threads, ce bloc de code mettra votre code sur le fil de l'interface utilisateur et attendra que tout soit rendu, puis affichez votre code: P> invalidate () code> si possible ou que vous pouvez vérifier cela dans le
olstresume () code> ou
tinrésume () code> fonction.
final View gv = this;
ViewTreeObserver vto = gv.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressLint("NewApi")
public void onGlobalLayout() {
gv.getViewTreeObserver().removeGlobalOnLayoutListener(this);
tv1=(TextView)findViewById(R.id.tv1);
tv2=(TextView)findViewById(R.id.tv2);
System.out.println("tv4 width:"+tv2.getWidth());
System.out.println("tv4 height:"+tv2.getHeight());
System.out.println("Right:"+tv2.getRight());
System.out.println("Left:"+tv2.getLeft());
System.out.println("Top:"+tv2.getTop());
System.out.println("Bottom:"+tv2.getBottom());
}
getleft () code>,
getdright () code> ne fonctionnera pas à chaque fois car ils renvoient la position relative au parent, pas à l'écran.
Les méthodes que vous avez écrites suffisent à Trouvez l'emplacement à l'écran, mais l'endroit où vous avez écrit n'est pas correct.
Essayez d'écrire les méthodes (vue.getftft (), vue.getop (), etc.) dans par exemple ... p> ** ** / p> ** p> < p> Cela résoudra votre problème. P> p>
C'est la réponse parfaite à cette question. + 1
La manière la plus simple est de l'obtenir en utilisant
Et si vous View.getLocationVoyonsCreen (); code> ou
GetLocationInwindow (); Code> P>
Ici, j'ai fondé la réponse. [Obtenez des coordonnées de la vue] [1] [1]: Stackoverflow.com/Questtions/2224844/...