Здравствуйте!
Задавал подобный вопрос здесь, но, видимо, не совсем корректно сформулировал.
Почему методы getLeft() и getTop() ImageView всегда возвращают 0? Мне нужно получить координаты нажатия на ImageView относительно его верхнего левого края. Абсолютные координаты прикосновения к экрану считываются без проблем, но как узнать координаты View относительно родительского layout?
Гугл вроде всё предельно понятно объясняет, но, видимо, я чего-то недопонимаю.
[syntax=java5]public class Alarm_Activity extends FragmentActivity implements View.OnTouchListener {
float x, y;
TextView tvX;
ImageView ivClock;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.set_alarm);
tvX = (TextView) findViewById(R.id.textView);
ivClock = (ImageView) findViewById(R.id.imageView);
ivClock.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v.getId() == R.id.imageView) {
x = event.getX();
y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
tvX.setText((x - v.getLeft) + ", " + (y - v.getTop));
break;
}
return true;
}
return false;
}
}[/syntax]
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView" />
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/clock_7"
android:layout_gravity="center" />
</FrameLayout>[/syntax]
Нашёл сходный вопрос и некое решение, но не понял, как его использовать.
И второй вопрос, почему обрабатываются нажатия на любой участок экрана, почему не срабатывает условие if (v.getId() == R.id.imageView) в нижеприведённом коде?
Спасибо за внимание.
Почему getLeft() и getTop() всегда возвращают 0?
Re: Почему getLeft() и getTop() всегда возвращают 0?
потому , что ты вызываешь этот метод, когда еще вьюшка не прорисовалась.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198