Это работает лучше, чем жесткое кодирование, поскольку Android по-прежнему будет возвращать значение, которое будет высотой строки состояния или строки действия на этом конкретном устройстве, даже если они могут быть невидимыми.
Итак, идея заключается в том, чтобы получить представление контента, к которому добавляются все ваши представления.
public View getContentView(Activity a) {
int id = a.getResources().getIdentifier("content", "id", "android");
return a.findViewById(id);
}
Затем в вашей деятельности
View cView = getContentView(this);
cView.post(()->{
int offsetY = cView.getTop();
// do whatever here.
});
ХорошееС помощью приведенного выше кода также учитывается панель действий.