我的应用程序一启动,就会AsyncTask
检索一个 JSON。在下载它时,我像往常一样显示一个进度对话框:
protected void onPreExecute() {
Context c = ((EventoMainActivity)mCallback);
mDialog = new ProgressDialog(c, R.style.my_Dialog);
mDialog.setTitle("Descargando datos del evento ");
mDialog.setMessage("Espere un instante...");
mDialog.setIndeterminate(true);
mDialog.show();
}
当我想自定义对话框时,我将我的样式传递给构造函数以更改颜色等,实现以下结果:
(有些样式来自 Widget.Sherlock.Light.ProgressBar 的继承)
到现在为止还挺好。使用颜色文本属性,我将其更改为红色,但这就是我所能做的。问题是我想为标题文本、消息文本和蓝色线条赋予样式。
我的方法是在 android 源代码(它们的布局 xml 文件)中寻找这些元素的结构。我发现progressDialog来自alertDialog。在那里我找到了定义标题参数和消息参数的结构:
From alert_dialog.xml
...
<com.android.internal.widget.DialogTitle android:id="@+id/alertTitle"
style="?android:attr/textAppearanceLarge"
android:singleLine="true"
android:ellipsize="end"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
...
From progress_dialog.xml
...
<TextView android:id="@+id/message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
...
问题是它android.R.id
不包含对这些 ID 的引用,因此我无法在代码中访问此视图findByID
并将我希望的样式应用于它们。
我知道如何进行自定义布局,但我想知道是否有某种方法可以设置默认组件的样式。
谢谢