私がアーカイブしようとしているもの:カスタムビューのダイアログが必要ですが、AlertDialog
の標準アイコン、タイトル、ボタンが必要です。私がやっている何標準のアイコン、タイトル、ボタンを持つプラットフォームのバージョンに依存しないカスタムダイアログ
は、このカスタムダイアログクラスである:
public class CustomDialog extends AlertDialog.Builder {
private Activity activity;
private View root;
public CustomDialog(Activity context) {
super(context);
this.activity = context;
}
public void setView(int layoutResID) {
LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
root = inflater.inflate(layoutResID, (ViewGroup) activity.findViewById(R.id.dialog_root), false);
ScrollView scroller = new ScrollView(activity);
scroller.addView(root);
setView(scroller);
}
public void setCustomView(View v) {
ScrollView scroller = new ScrollView(activity);
scroller.addView(v);
setView(scroller);
}
public View getRoot() {
return root;
}
@Override
public AlertDialog create() {
AlertDialog dialog = super.create();
dialog.getWindow().getAttributes().width = LayoutParams.MATCH_PARENT;
return dialog;
}
}
これはかなり良い作品、TextView
色は前ハニカムハニカムデバイス上で正しくありません期待しています。私はHolo.Light
テーマを使用していますので、標準的なテキストの色は黒ですが、ハニカム前のデバイスのダイアログの背景色も同じです。ハニカムデバイスでは、ダイアログの背景が白です。だから、私はvalues
フォルダのstyles.xml
にdialogTextColor=white
を追加し、values-v11
フォルダにはdialogTextColor=black
を追加しました。次に、カスタムダイアログで使用しているTextView
にスタイル属性を追加する必要がありました。これはICSまで機能しましたが、なぜ> - v11であるのかは明らかです。私はそれを変更することができますが、私はすべての正しいことを行うカスタムダイアログをしたい:アプリケーションのテーマ、ダイアログの幅に基づいて、前ハニカム、ハニカム、ICS(と将来来るもの) AlertDialog
の標準ボタン、タイトル、アイコン。
これは意味があります。私はこれを試すつもりです –
getContextはNoSuchMethodErrorを引き起こし、私がやっているのはactivity.getApplicationContext()です。これはあなたが言ったように動作します。ありがとうございました:) –
私はちょうど1つの問題に気づいた。 RadioButtonsやTimePickerなどのTextViewが含まれているウィジェットは、ハニカムとICS(不可視)では白、ハニカム前(可視)では黒です。 –