Я пытаюсь переместить вид LinearLayout, изменив его поле, используя интерфейс и следующий код:Android. Изменение запаса LinearLayout во время выполнения
@Override
public void onListScroll(int offset) {
tabBarOffset += offset;
if (tabBarOffset < 0) tabBarOffset = 0;
if (tabBarOffset > 50) tabBarOffset = 50;
View tabBar = findViewById(R.id.movingTabBar);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) tabBar.getLayoutParams();
params.topMargin = tabBarOffset;
}
код работает с первым вызовом - когда активность создаются. Но всякий раз, когда кодовый блок вызывается после, никаких изменений в представлении не происходит. Я могу подтвердить, что параметр margin изменен, из-за трех фактов: 1) код работает при запуске 2) регистрация значения marginTop всегда дает новые значения (изменяется) 3) в представлении иерархии я мог видеть новое значение маржи
, так что я думаю, что мне просто нужно вызвать какой-то метод для обновления самого представления? чтобы перерисовать? или, может быть, мне нужно вызвать некоторый код в потоке пользовательского интерфейса? потому что этот код запускается из обратного вызова интерфейса.
спасибо за попытку помочь. К сожалению, это не имеет никакого эффекта. –
только ради интереса, пожалуйста, попробуйте отредактированный вариант –
работ! так что тогда была проблема? работает на основной нити? –