ImageView.getX() получаю всегда нулевое значение

296
17 мая 2017, 06:29

Добрый вечер!

Суть проблемы заключается в том что при выполнение этого кода:

float x = imageCell[5][5].getX();
float y = imageCell[5][5].getY();
int xx = Math.round(x);
int yy = Math.round(y);
textview.setText(String.valueOf(xx+" " + yy));

Что я делаю не так?

Пытаюсь получить координаты элемента ImageView на экране, но как бы я не делал всегда получаю значение ноль.

Answer 1

Полагаю, что Вы пытаетесь получить данное значение в методе onCreate(...) активити и вполне справедливо получаете ноль, так как во время выполнения данного метода виджеты еще не были отрисованы и все их числовые характеристики, связанные с расположением и размерами будут нулевыми.

Вышеприведенное утверждение легко проверить следующим образом:

mImageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.d("LOG_TAG", "mImageView.getX(): " + mImageView.getX());
    }
});

В данном случае, при нажатии на ImageView, Вы получите корректное значение.

Отследить окончание отрисовки View можно с помощью OnGlobalLayoutListener следующим образом:

public class MainActivity extends AppCompatActivity {
    private ImageView mImageView;
    private ViewTreeObserver.OnGlobalLayoutListener mOnGlobalLayoutListener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mImageView = (ImageView) findViewById(R.id.image_view);
        mOnGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                Log.d("LOG_TAG", "mImageView.getX(): " + mImageView.getX());
                mImageView.getViewTreeObserver().removeOnGlobalLayoutListener(mOnGlobalLayoutListener);
            }
        };
        mImageView.getViewTreeObserver().addOnGlobalLayoutListener(mOnGlobalLayoutListener);
    }
}
READ ALSO
Rollback происходит автоматически при сохранении сущности в БД

Rollback происходит автоматически при сохранении сущности в БД

При сохранении записи в Бд постоянно происходят rollbackВижу, что сущность сохранилась(получаю ее id)

314
Не удается отловить Exception при помощи @Test(expected = PSQLException.class)

Не удается отловить Exception при помощи @Test(expected = PSQLException.class)

У меня тест который должен проверять выброс Exception, но не смотря на то что в StackTrace он попадает, выражение @Test(expected = PSQLExceptionclass) на него не реагирует:

420
Обновление времени со старта JVM

Обновление времени со старта JVM

Код, через который можно узнать время прошедшее со старта JVM таков:

337
Краш android приложения с savedInstanceState

Краш android приложения с savedInstanceState

Лабораторная работа в универеДелаю всё по примеру, но при использовании БД для сохранения данных класса SQLiteOpenHelper программа крашится в эмуляторе...

432