Обновите ширину горизонтальной полосы выполнения программно (в горизонтальной прокрутке)

У меня есть индикатор выполнения в режиме прокрутки, и я хотел бы программно изменить ширину, но похоже, что это невозможно, в xml у меня есть только индикатор выполнения, подобный этому:

<HorizontalScrollView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ProgressBar
        android:id="@+id/progressbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyleHorizontal" />
</HorizontalScrollView>

И код тоже очень простой:

ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressbar);
progressBar.setMinimumWidth(3000);
progressBar.invalidate();   // tried called invalidate although setMinimumWidth called requestLayout, not help

Я также попытался установить ширину макета, например:

progressBar.getLayoutParams().width = 3000;
progressBar.invalidate();

Но обнаружил, что это работает только для индикатора выполнения, а не в режиме прокрутки...

Любая идея, как я могу обновить ширину индикатора выполнения (в режиме горизонтальной прокрутки)? и почему вид прокрутки не соответствует ширине индикатора выполнения? Спасибо!


person AsfK    schedule 05.09.2016    source источник
comment
В будущем, пожалуйста, не удаляйте вопрос, а затем сразу задавайте его повторно.   -  person CommonsWare    schedule 05.09.2016
comment
@CommonsWare, я сделал это из-за больших изменений в исходном вопросе, но получил ваш комментарий и не буду делать этого в будущем. Спасибо!   -  person AsfK    schedule 05.09.2016
comment
Я сделал это, потому что большие изменения в исходном вопросе - вот для чего нужна ссылка на редактирование. :-)   -  person CommonsWare    schedule 05.09.2016


Ответы (1)


Вы не правильно устанавливаете параметры. Попробуй это:

HorizontalScrollView.LayoutParams params = (HorizontalScrollView.LayoutParams) progressBar.getLayoutParams();
params.width = 3000;
progressBar.setLayoutParams(params);
person Shaishav    schedule 05.09.2016