gpt4 book ai didi

android - 更改运行时添加的 ProgressBar 的宽度

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:14 25 4
gpt4 key购买 nike

我正在从代码构建一个 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();

最佳答案

R.layout.activity 包括:

<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:visibility="visible"
style="@android:style/Widget.ProgressBar.Large.Inverse"
/>

然后是代码:

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
ProgressBar bar = (ProgressBar)findViewById(R.id.progress);
bar.getLayoutParams().height = 500;
bar.invalidate();
}

调用 invalidate() 方法很重要,因为在重新绘制 View 以考虑更改时。虽然不直观,但它确实允许通过批处理更改获得更好的性能。

关于android - 更改运行时添加的 ProgressBar 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5008059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com