0

公式ドキュメントから:

1つ、2つ、または3つのボタンを表示できるDialogのサブクラス。このダイアログボックスに文字列のみを表示する場合は、setMessage()メソッドを使用します。より複雑なビューを表示する場合は、「カスタム」と呼ばれるFrameLayoutを検索し、それにビューを追加します。

 FrameLayout fl = (FrameLayout) findViewById(android.R.id.custom);
 fl.addView(myView, new LayoutParams(MATCH_PARENT, WRAP_CONTENT));

ただし、問題は、android.R.id.customが8APIレベルのOSでのみ表示されることです。

より少ないAPIレベルで作業する場合、どうすればカスタムAlertDialogを作成できますか?

4

2 に答える 2

1

実際に行うことは次のとおりです。

まず、res/layoutの下にcustom_layout.xmlを作成します。次に、アクティビティに次のコードを追加します

Dialog myDialog = new Dialog(this);
myDialog .setOwnerActivity(MyParentActivity.this);
myDialog .setContentView(R.layout.custom_layout);
myDialog .setTitle("title");

とを使用して表示および非表示にすることができmyDialog.show();ますmyDialog.dismiss();

custom_layout.xml内にボタンやその他のビューがある場合は、次の方法で見つけることができます。

Button myButton = (Button) myDialog.findViewById(R.id.myButton);

これがお役に立てば幸いです。

于 2012-01-16T11:53:28.583 に答える
0

作業中のアプリでツールチップを表示するために、Dialogを拡張する新しいクラスを作成し、setContentView()を使用してカスタムレイアウトを表示しました。ニーズによっては( AlertDialogである必要がある理由を正確に説明していません)、これも機能する場合があります。

これは多少主観的かもしれませんが、ある程度の健全性を保つために、ターゲットAPIを選択するときに現在のAndroidバージョンの配布を考慮に入れることができます。次のプラットフォームディストリビューションによると、Androidデバイスの10.2%のみが8未満のAPIレベルを使用しており、約86%がAPIレベル8〜10を使用しています。

于 2012-01-16T11:56:00.387 に答える