【发布时间】:2011-06-27 20:11:49
【问题描述】:
我正在从代码构建 UI,并且可以成功添加 ProgressBar 小部件,但是我无法将小部件的尺寸更改为我需要的值,它始终保持默认大小(大约 50dp)。我试过下面的代码;
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();
【问题讨论】:
-
我想一个解决方案是复制小部件的源代码并实现缺少的方法。似乎是一个疯狂的解决方案,一定有办法做到这一点。
-
只是为了确认一下:您正在寻找的是酒吧风格,而不是微调风格?找出样式/形状的定义位置并复制和调整它们可能就足够了。
标签: android layout progress-bar width