0

我已经在带有 android 版本的 Transformer Prime 201 上安装了我的 .apk 。4.0.3但 ProgressDialog 看起来不像设备上的自定义 ProgressDialog。

为什么会这样?为了在设备上使用自定义 ProgressDialog 样式,我必须在代码中进行哪些更改?

ProgressDialog progressDialog = new ProgressDialog(this.context);
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(true);
progressDialog.setOnCancelListener(this);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setMessage(MESSAGE);
progressDialog.show();

在此处输入图像描述 在此处输入图像描述

4

3 回答 3

5

上面接受的答案会起作用,但它的方法就像用大锤敲碎花生一样。您会弄坏螺母,但也可能损坏螺母下方的桌子。仅仅为了改变一个进度对话框的外观而改变整个应用程序的主题是没有意义的。

imo 更好的解决方案是保持应用程序的主题不变,只更改进度对话框的主题。您可以使用以下代码在所有 Android 版本上获取 Gingerbread 进度对话框外观。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
    dialog = new ProgressDialog(yourActivity, AlertDialog.THEME_TRADITIONAL);
else
    dialog = new ProgressDialog(yourActivity);
于 2012-10-07T19:45:37.017 回答
4

您需要将您的应用程序设置为 Holo 主题。仅当您在应用中使用 Holo 主题时才会显示此进度指示器。

问题是您不能简单地设置主题,因为 Android 版本小于 3 的设备没有此主题可用。

因此,您需要创建两个主题文件。一个在 res/values/ 文件夹中,一个在 res/values-v11/ 文件夹中 文件夹 res/values-v11 中的文件将为 API 级别 11 或更高级别的所有设备加载。

在 values-v11 文件夹中为您的应用定义一个主题,如下所示:

<resources>
   <style name="Theme" parent="@android:style/Theme.Holo.Light"></style>
</resources>

在默认值文件夹中定义一个主题,如下所示:

<resources>
   <style name="Theme" parent="@android:style/Theme.Light.NoTitleBar"></style>
</resources>

现在将此主题应用于清单中的应用程序:

<application
    android:name=".name.App"
    android:hardwareAccelerated="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme" >

有关这方面的更多信息,请阅读有关主题和样式的文档

于 2012-07-03T12:12:25.090 回答
0
ProgressDialog progressDialog;

if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){
   progressDialog = new ProgressDialog(new ContextThemeWrapper(context, android.R.style.Theme_Holo_Light_Dialog));
}else{
   progressDialog = new ProgressDialog(context);
}

progressDialog.setMessage("Loading....");
progressDialog.show();
于 2014-02-15T08:36:04.313 回答