View.getLocationInWindow() only returns Y (and sometimes not even X)

by ClarkBattle » Fri, 29 Jan 2010 06:50:17 GMT


Sponsored Links
 I have an app with the following code using android 2.0.1

int[] loc = new int[2];

Button btn = (Button) findViewById( R.id.btn3 );
if( btn != null )
    btn.getLocationInWindow( loc);

Log.i("Where?","x=" + where[0] + " y=" + where[1] );

This logs "x=0 y=88" but R.id.btn3 is in the middle of the screen!

I was experiencing this in android 2.0.1 so I wrote the following test
app in android 2.1 that logs the XY coordinates of a button in the
middle of the screen.

This logs "x=0 and y=0"

public class TestLoc extends Activity
{
        @Override
        public void onCreate( Bundle savedInstanceState )
        {
                super.onCreate( savedInstanceState );
                setContentView( R.layout.main );
        }

        @Override
        public void onStart()
        {
                super.onStart();

                int[] where = new int[2];
                Button view = (Button) findViewById( R.id.btnThree );
                if( view != null )
                {
                    view.getLocationInWindow( where );
                    Log.i("Where?","x=" + where[0] + " y=" + where[1] );
                }
        }
}

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
    xmlns:android=" http://schemas.android.com/apk/res/android" ;
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TableRow android:id="@+id/rowOne">
      <Button android:id="@+id/btnOne"/>
    </TableRow>

    <TableRow android:id="@+id/rowTwo">
      <Button android:id="@+id/btnTwo"/>
      <Button android:id="@+id/btnThree"/>
    </TableRow>
</TableLayout>

Wha's up?  Is there a reliable way to get the window coordinates of
any view?

Thanks for reading,
Clark

--



Other Threads

1. How to config G1 to make both browser and MMS work?

when you want to use different APNs for both data and MMS, you need to set
the "apn type" field for the system to make a difference between them and
use them both.

use "apn type=default" for the data APN.
and "apn type=mms" for the MMS one.

Hope this helps





--~--~---------~--~----~------------~-------~--~----~

2. Do ProximityAlerts actually work?

I'm coming to the conclusion that ProximityAlerts (PAs) don't actually work.


Here is why I think PAs don't work:
 sends ProximityAlerts, that shows up in the log files and B) when my code
does a sendBrodcast(new Intent(TYW_PROXIMITY_ALERT)) the phone vibrates and
I receive a notification, so I know that part is working fine.

-- 

Faber Fedor
Linux New Jersey
http://linuxnj.com
faberfedor.blogspot.com

--~--~---------~--~----~------------~-------~--~----~

3. Google Checkout question

4. How to move file from sdcard to private location

5. Seems questioins here are rarely answered? Better place to post them?

6. Seems questioins here are rarely answered? Better place to post them?

7. Activity is required