我一直在研究很多Progress Bar示例,它们都涉及创建新线程或异步任务。 这些进度条是在任务完成时弹出,更新和消失的进度条。
但是,我有兴趣在我的应用程序中创建一个永久的ProgressBar,可以通过对进度进行硬编码来实际更新。
所以这是一个示例代码:
ProgressBar levelProgress;
levelProgress = (ProgressBar)findViewById( R.id.progressBarLevel);
levelProgress.setMax(100);
levelProgress.setProgress(50); //this is what I wanted to do
我想让ProgressBar保持不变, 所以使用上面的代码,我希望在我的布局中有一个永久的ProgressBar可以完成一半。 我实际拥有的是一个空的ProgressBar。
最后一个问题是,有没有办法对进度条的更新进行硬编码?或者只能通过AsyncTask或可运行的线程获得?
编辑:我忘了提到我将其作为片段实现。 稍微完整的代码如下
public class myLevelDisplayActivity extends Fragment{
LinearLayout ll;
static FragmentActivity fa;
ProgressBar levelProgress;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
fa = super.getActivity();
ll = (LinearLayout) inflater.inflate(R.layout.levelDisplay, container, false);
levelProgress = (ProgressBar) ll.findViewById( R.id.progressBarLevel);
levelProgress.setMax(100);
levelProgress.setProgress(0);
levelProgress.setProgress(10);
levelProgress.setProgress(50);
return ll;
}
levelDisplay.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:ignore="HardcodedText,ExtraText,ExtraText,ExtraText,ExtraText,ExtraText" xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp" >
<ImageView
android:id="@+id/imageViewCurrentLevel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/circle1" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_weight="0.26"
android:orientation="vertical">
<TextView
android:id="@+id/textViewLevelTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:text="Level Title"
android:textAppearance="?android:attr/textAppearanceMedium" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<ProgressBar
android:id="@+id/progressBarLevel"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3.16"
android:max="100"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_weight="3.16" >
<TextView
android:id="@+id/textViewCurrent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Current"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textViewSeparator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textViewNextLimit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next Level"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:0)
您可以在Layout中删除ProgressBar(表单小部件下的一个)。 我不知道你是否可以从XML设置进度百分比,如果没有,你可以像这样以编程方式设置:(这只是我的头脑):
ProgressBar pb = (ProgressBar)findViewById(R.id.progressBar);
pb.setProgress(50);
答案 1 :(得分:0)
您可以在不使用Thread
或AsyncTask
的情况下从XML和代码设置进度。您的问题是您的代码未运行或您的布局出现问题。
布局XML应该具有style="?android:attr/progressBarStyleHorizontal"
或该样式中包含的自定义属性集。见Using a Horizontal Progress Bar in Android
<ProgressBar
android:id="@+id/progressBarLevel"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="50" />
最后一个问题是,有没有办法对进度条的更新进行硬编码?
是的,Thread
/ AsyncTask
的原因是人们希望随着时间的推移改变进度但你不想这样做,你不必使用它。
答案 2 :(得分:0)