2016-02-11 3 views
2

У меня есть статически определенный относительный макет с высотой, установленной до wrap_content.Динамически модифицируйте статически определенный макет. Не могу увидеть внесенные изменения

Я добавляю к нему несколько детей динамически. Это выглядит просто отлично.

Теперь я должен добавить еще нескольких детей и выстроить их над ранее добавленными детьми. Такие работы. (Примечание: я могу сделать это только после добавления ранее добавленных детей, поскольку мои новые дети зависят от их ширины.)

Я могу видеть изменения только в том случае, если я изменю высоту макета, чтобы сказать 50dp против wrap_content.

Я пробовал звонить invalidate(), postInvalidate() и requestLayout() на макет холдинга, но это не сработало. Что я не делаю?

public void layOutExtras(CustomView section) { 
    if (section.isUnderlined()) { 
     int labelOrientation = section.getLabelOrientation(); 
     View line = createLine(labelOrientation, section.getMeasuredWidth(), section.getId()); 
     addView(line); 
    } 
} 

private View createLine(int orientation, int width, int viewId) { 
    RelativeLayout.LayoutParams params = new LayoutParams(width, 4); 
    params.addRule(ABOVE, viewId); 
    params.addRule(ALIGN_RIGHT, viewId); 
    View line = new ImageView(context); 
    line.setBackgroundColor(Color.RED); 
    line.setLayoutParams(params); 
    return line; 
} 
+0

Вы можете сделать программные обновления для просмотра. Это случается все время. Но вы на самом деле не сказали, что вы пытаетесь сделать, показали свои макеты или скриншоты, которые показывают, что вы ожидаете, отличается от того, что на самом деле происходит. –

ответ

0

Sounds like the issue I had a few days ago. Вероятно, проблема связана с тем, что высота не установлена ​​правильно. Попробуйте установить минимальную высоту как нового вида, так и контейнера, который вы изменяете.

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