我从代码构建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