1

アプリが起動するとすぐに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 から継承されています)

ここまでは順調ですね。color text プロパティで赤に変更しましたが、それですべてです。問題は、タイトル テキスト、メッセージ テキスト、および青色の線にスタイルを与えたいことです。

私のアプローチは、Android ソース (それらのレイアウト xml ファイル) でこの要素の構造を探していました。progressDialog は alertDialog から来ていることがわかりました。そして、title パラメーターと message パラメーターを定義する構造を見つけました。

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希望するスタイルを適用できないことです。

カスタム レイアウトを行う方法は知っていますが、デフォルト コンポーネントのスタイルを設定する方法はあるのでしょうか

ありがとう

4

2 に答える 2

0

しばらく調べた結果、無理だと思います。デフォルト コンポーネントは、アプリから到達できない ID を使用してスタイル設定されているため、独自のカスタム コンポーネントを作成しない限り実行できません。

于 2012-11-07T10:09:55.703 に答える
0

ラッパーを使用して、現在のコンテキスト内の任意のものにテーマ (スタイル) を設定できます。R.style.MyTheme をアラート ダイアログのスタイルとして設定し、そのビューを自分の好みに合わせてカスタマイズできます。

ContextThemeWrapper ctw = new ContextThemeWrapper( this, R.style.MyTheme );
AlertDialog.Builder builder= new AlertDialog.Builder( ctw );
于 2012-09-27T15:38:54.020 に答える