在android中查找显示(屏幕)上的View位置(位置)

Bal*_*i.K 8 android android-layout android-view

我想在显示屏上找到视图的位置.

要做到这一点,我用的方法,如view.getLeft(),view.getBottom(),view.getRight(),view.getTop().但不幸的是,所有这些方法都被退回了0.
有没有其他方法可以找到视图的位置(即屏幕上的坐标)?

我的布局main.xml:

<TextView android:id="@+id/tv1"
    android:layout_width="200px"
    android:layout_height="30px"
    android:text="welcome to" />

<TextView android:id="@+id/tv2"
    android:layout_width="200px"
    android:layout_height="30px"
    android:text=" Make Eit solution " />
Run Code Online (Sandbox Code Playgroud)

我的班级有这个onCreate():

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());
Run Code Online (Sandbox Code Playgroud)

Xar*_*mer 8

最简单的方法是使用View.getLocationOnScreen(); OR 来获取它 getLocationInWindow();

如果你想要相对于根Layou t的位置然后


san*_*jay 6

使用getLeft(),getRight(),getTop(),和getBottom().这些可以在实例化视图后使用.

  • 这些方法给出了相对于**的父视图位置**. (31认同)

Vis*_*dey 5

你写的方法足以在屏幕上找到位置,但是你写的地方不正确.

尝试在onWindowFocusChanged(boolean hasFocus)方法中编写方法(view.getLeft(),view.getTop()...等).

例如...

**

@Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
                System.out.println("Right:"+tv2.getRight());
                System.out.println("Left:"+tv2.getLeft());
                System.out.println("Top:"+tv2.getTop());
        }
    }
Run Code Online (Sandbox Code Playgroud)

**

它会解决你的问题.


小智 2

我不确定您是否可以在布局阶段完成之前获取视图的位置。布局视图后,您可以使用它getLocationOnScreen来获取视图的位置。getTop类似的仅返回视图在其父视图中的位置。


归档时间:

查看次数:

39029 次

最近记录:

9 年,6 月 前