2017-01-13 7 views
1

У меня есть View, RelativeLayout "gesLayout". Когда размер «gesLayout» изменяется, он вызывает метод «изменить размер».Изменить размер изображения в теме insn't UI Thread

gesLayout = new RelativeLayout(this) { 
     @Override 
     protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
      resize(); // -> bei Resize die Elemente neu anordnen. 
      super.onSizeChanged(w, h, oldw, oldh); 
     } 
    }; 

Вот метод изменения размера:

private void resize() { 

    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 

      ViewGroup.LayoutParams params = layButtons.getLayoutParams(); 
      params.height = 500; 
      layButtons.setLayoutParams(params); 

      layButtons.invalidate(); 

     } 
    }); 
} 

Но высота другого макета не меняется. Но когда я запускаю тот же код, который находится в методе resize(), после нажатия кнопки он работает идеально.

Итак, мой вопрос: как я могу получить доступ к теме интерфейса здесь? Поскольку вы можете использовать runOnUiThread() - метод не работает.

P.S. Я уже проверил, что метод resize() вызывается правильно.

ответ

0

Если вы измените параметры макета, вам нужно вызвать requestLayout, чтобы снова выложить его.

+0

Я пробовал это раньше, но без какого-либо эффекта. И, как я сказал раньше: «Но когда я запускаю тот же код, который находится в методе resize(), после нажатия кнопки он работает идеально». –

 Смежные вопросы

  • Нет связанных вопросов^_^