Изменить ширину добавленного ProgressBar во время выполнения

Я создаю пользовательский интерфейс из кода и могу успешно добавлять виджеты ProgressBar, однако я не могу изменить размеры виджета на нужные мне значения, он всегда остается с размером по умолчанию (около 50 dp). Я пробовал следующий код:

    ProgressBar progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleHorizontal);
    progressBar.setMinimumHeight(20);
    progressBar.setMinimumWidth(100);

Я также пробовал установить progressBar LayoutParams, но опять ничего, и я попытался обернуть виджет в другой макет, но все равно не повезло.

Кто-нибудь может помочь, как я могу не вижу, как это сделать? Если есть решение, использующее XML, оно могло бы работать, но я должен установить размер и местоположение во время выполнения.


Для Progress XML я использовал следующее.

<ProgressBar
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent"
      android:layout_height="10dp"
      android:indeterminateOnly="false"
      android:progressDrawable="@android:drawable/progress_horizontal"
      android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal"
      android:maxWidth="1000dp"
   />

Затем код для его расширения выглядит следующим образом. Это смесь того, что мы обсуждали.

    LayoutInflater layoutInflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    ProgressBar progressBar = (ProgressBar)layoutInflater.inflate(R.layout.progress_bar, null);
    progressBar.setMinimumHeight(10);
    progressBar.setMinimumWidth(200);
    progressBar.setLayoutParams(new RelativeLayout.LayoutParams(200, 10);

    progressBar.setMax(100);
    progressBar.setProgress(getScrollBarValue());
    progressBar.setIndeterminate(isIndeterminate());
    progressBar.getLayoutParams().width = 200;
    progressBar.invalidate();
7
задан Snowwire 16 February 2011 в 20:51
поделиться