我有扩展 SherlockListActivity 的 MainActivity。这是 onCreate 方法:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new MyXMLDownloader().execute(this);
}
MyXMLDownloader 只是 AsyncTask 类,我用它来从 http 下载 XML 文件。在 onPostExecute 方法中,我调用了 makeMainGUI(),它基于该 XML 文件创建 GUI(我的意思是它填充了我的 ListView)。
这是 main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:id="@+android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
我想添加 ProgressBar 小部件(和一些文本)。它应该在下载 XML 之前显示,并且在填充 ListView 后它应该消失(当然它发生在下载 XML 之后)。我怎样才能做到这一点?
我对此有疑问,因为我必须在 main.xml 中有 ListView,因为我的 MainActivity 类扩展了 SherlockListActivity。
编辑:
我设法做这样的事情:
<ProgressBar
android:id="@android:id/empty"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
我将 ProgressBar 添加到 main.xml 并带有“空”ID。只要 ListView 为空就显示,这是正确的。但我也不知道如何在这里放置一个 TextView,因为只有一个项目可以有一个“空”的 id。
EDIT2:因为我认为我设法做到了这一点。在 main.xml 我添加了以下内容:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@android:id/empty">
<ProgressBar
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/progressBar1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Please wait"
android:textAppearance="?android:attr/textAppearanceLarge"
android:id="@+id/waitingTextView"/>
</LinearLayout>
这是我需要的东西。谢谢!