我從代碼構建UI並可成功添加ProgressBar小部件,但無法將小部件的尺寸更改爲我需要的值,它始終保持默認大小(大約50dp)。我試過了下面的代碼;更改在運行時添加的ProgressBar的寬度
ProgressBar progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleHorizontal);
progressBar.setMinimumHeight(20);
progressBar.setMinimumWidth(100);
我也嘗試設置progressBar LayoutParams,但再次沒有,我試過在另一個佈局中包裝小部件,但仍然不是運氣。
任何人都可以幫忙,因爲我不知道該怎麼做?如果有使用XML的解決方案,它可以工作,但我必須在運行時設置維度和位置。
For 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();
我想解決的辦法是複製小部件的源代碼並實現缺少的方法。似乎一個瘋狂的解決方案,必須有辦法做到這一點。 – Snowwire 2011-02-16 20:22:02
只需確認:您正在尋找酒吧風格,而不是微調風格?找出樣式/形狀的定義位置並複製和調整它們可能就足夠了。 – sstn 2011-02-17 01:08:41