средство просмотра иерархии отображает изменения высоты

это мой первый вопрос

Я построил пользовательский компонент:RelativeLayout сTextView на дне и дваImageView выше, действуя как кликабельный элемент из 2 столбцов гистограммы. Чтобы установить высоту бара, я получаю «доступную высоту» вonLayout(), как высота контейнера минус метка:

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    super.onLayout(changed, l, t, r, b);
    mAvailHeight = getHeight()-findViewById(R.id.label).getHeight(); // it works

а затем назначьте его (умноженное на значение 0-1.) в качестве параметра макета для ImageView:

    View bar = findViewById(R.id.bigBar);
    RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) bar.getLayoutParams();
    rlp.height = Math.round((float)mAvailHeight * mBigBarHeight);
}

mBigBarHeight переменная (0.-1.) может быть установлена ​​с помощью этой функции:

public void setBigBarHeight(float value, float max) {
    mBigBarHeight = value / max;    
    requestLayout(); //
    invalidate();    // do these help? i find no difference
}

Сейчас. Когда я добавляю один из этих "HistogramBar" вonCreate() и установить высоту и маркировать все работает, как я ожидаю. Если я попытаюсь изменить их позже, скажем onClickSomething:

bar.setBigBarHeight(25, 100);
bar.setSmallBarHeight(50, 100);
bar.setLabel("jjk");

меняется только ярлык. Я проверил с помощью Hierarchy Viewer, и фактически LayoutParams изменился. Если я нажму еще раз, появятся изменения.

Самое смешное, чтодаже если я делаю «Load View Hierarchy» из инструментаизменения отображаются (на эмуляторе) !! Что просходит? Это странно? Я хочу сделать это в своем коде, чтобы он работал!

Я не мог найти подобный вопрос. Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос