15

デフォルトのAndroidUIコントロール(タイトル、背景、ボタンなど)を使用せずに、完全にカスタムのDialogまたはPopupWindowを取得しようとしています。

これは可能ですか?私はこれを探すのに何時間も費やしましたが、運がありません...これは簡単に可能であるように思われますが、私はそれを見つけることができません。

できれば、これはXMLからのビューを膨らませることによるものですが、この時点でうまくいくものなら何でもいいでしょう。

ありがとう。

4

2 に答える 2

29

私が取った手順:

  1. Dialogを拡張するクラスを作成します。
  2. onCreate で、R.layout であり、R.style.popupStyle であると呼び出しsetContentView(x, y)ますx(y以下を参照)。
  3. res/values/style.xml で、デフォルトの DialogWindow スタイルをオーバーライドする必要があります。これを親として持つスタイルを作成しようとしましたが、それでもすべてのデフォルトがクリアされませんでした。そこで、Android git ツリーをチェックしてデフォルトのスタイルを取得し、それをコピーして貼り付けました。これは1つです:
<style name="Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowTitleStyle">@android:style/DialogWindowTitle</item>
    <item name="android:windowBackground">​​@android:drawable/panel_background</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
</style>

いくつかのエラーが発生しますが、公式の Android の styles.xml および themes.xml ファイルからさらに多くのものをコピーして解決してください。これが私のstyles.xmlファイルの内容です: http://pastebin.com/RRR15YYS

それはあなたに白いポップアップを与えるだけで、境界線も何もありません。カスタマイズを開始します。:)

私を正しい軌道に乗せてくれたmbairdに感謝します。

[編集] 自分の答えをもう一度調べる必要があり、少なくとも 10 分は公式の Android スタイル/テーマ ファイルを検索したので、今後の参考のために、ここにあるのは styles.xmlthemes.xmlです。

于 2010-05-05T16:17:40.517 に答える
8

AlertDialogを実際にカスタマイズしようとしているようです。やりたいことについては、 Activityを拡張するクラスを作成してアクティビティを作成する方法と同様に、Dialogを拡張する独自のクラスを作成する方がよい場合があります。

アクティビティの場合と同様に、カスタム Dialog クラスの onCreate() メソッド内で setContentView() を呼び出すことにより、レイアウト XML を設定できます。

過去に、AlertDialogs をカスタマイズできる量に制限がありました。必要なレベルのカスタマイズを実現するために、独自の Dialog クラスを実装しました。

于 2010-05-05T14:17:24.447 に答える