2012-01-05 28 views
8

私は最初のAndroidアプリケーションを開発中で、自分のアクティビティをスタイル付けしようとしています。最終的には、私の活動が対話と同じように見えるようにしたいと思います。私は私のAndroidManifest.xmlにすべての私の活動に次のコードを使用してTheme.Dialogスタイルを与えている:Androidでダイアログを表示するにはどうすればよいですか?

<application 
    android:icon="@drawable/group" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Dialog"> 
</application> 

これが私の活動の「浮き」の外観と、ダイアログの境界ではなく、スタイルのタイトルを提供します。タイトルは、一般的なダイアログの背景と同じ色と外観を持ち、「実際の」ダイアログのように「ヘッダー」の背景と境界線ではありません。どちらの例でも、ヘッダーにはすばらしい境界があり、2番目の例ではグラデーションの背景がどのようにあるかに注目してください。

アクティビティのタイトルがシステムのダイアログタイトルを継承していることを確認してください。Theme.Dialogに付属するボーダーと「フロート」に加えて、自分のアクティビティのダイアログの外観を効果的に再現できますか?スタイル?私はちょうどそれが私のマニフェストのintent-あたりとして意図に応じてロードされていてもdilaogようLOOK、それをしたい、別のダイアログとしての私の活動を呼び出すにしたくないことを

注意フィルタ。

Dialog Example 1

Dialog Example 2

ADD:それはonCreate()にスピンアップ時に、実際のダイアログに自分自身を回すために、いくつかのメソッドを呼び出して、多分私は私の活動を持つことができるいくつかの方法がありますか?アクティビティはまだシステムからのインテントに応答できる必要があることに注意してください。

+0

あなたが欲しいですか?画像の最初の1つまたは2つ目。 – Sujit

+0

これらは両方とも、標準の表示ダイアログメソッドを呼び出した結果です。2つ目はSamsungのTouchWiz UIをテーマにしたダイアログです。最初はCyanogenmodで実行しているスキンをテーマにしています。基本的には、ユーザーのデバイスが実行されているどのようなテーマでも、AlertDialog.Builderを使用した場合と同じようにダイアログが表示されている限り、私のアクティビティが表示されます。 – eidylon

答えて

2

言及するの不在

・ホープ、このことができます。..

の代わりに具体的には、私は別のアプローチを発見した。私は実装のアイデアの代わりにアプローチのアイデアを探して質問をしましたhere。 GalDude33は、私が望むものを達成する方法を理解するのを助けました。彼の答えはこのQの答えでした。

+0

もちろん、このアプローチの問題は、結果にActivityのプロパティがないことです。例えば。ダイアログにActionBarを表示することはできません。 –

+0

私は実際にActionBarを使用できないことが最大の欠点であることを認め、自分の類似したツールバーを動かさなければならないことを認めます。あなたがダイアログバーの機能を得る方法を私に示して、ActionBarを使うことができれば、私はとても幸せです! – eidylon

+0

onCreate(...)メソッドでアクティビティのディメンションを変更できることがわかりましたが、黒い罫線を半透明にする方法がわからないので、ダイアログのように見えます: 'WindowManager.LayoutParams params = getWindow()。 getAttributes(); params.height = 300; params.width = 100; getWindow()。setGravity(Gravity.CENTER); getWindow()。setAttributes(params); ' –

2

以下のようにすることができます。

ダイアログのレイアウトを作成し、以下のように設定します。 Aダイアログテーマは、カスタマイズダイアログのスタイルとレイアウトの背景に別の色を与えた場合(下android:background="#ffffffff"を追加するのstyles.xml

<resources> 
<style name="MyDialogTheme" parent="android:Theme.Dialog"> 
      <item name="android:background">#ffdddddd</item> 
</style> 
</resources> 

に、親として指定することにより、カスタマイズすることができ

Dialog mDialog = new Dialog(MainScreen.this,android.R.style.Theme_Translucent_NoTitleBar); 

mDialog .requestWindowFeature(Window.FEATURE_NO_TITLE); 

mDialog .setContentView(R.layout.dialoglayout); 
mDialog .show(); 
+0

別のアクティビティでこれをコードに追加する必要がありますか?私の活動はランチャーインテント(ホームスクリーン上に作成されたショートカット)に直接反応し、そのインテントのためにシステムから呼び出されたとき、またはランチャーから直接呼び出されたときに、ダイアログのように見えます。 – eidylon

4

あなたのmain.xmlファイルのレイアウトヘッダー)、それは見た目のようなシステムダイアログを与えます。 以下のようにあなたのマニフェストにカスタマイズされたテーマを参照してください:私がやりたいことを見て決定した後

android:theme="@style/MyDialogTheme" 
+0

さて、私はすでに自分のアクティビティで 'Theme.Dialog'スタイルを使用していますが、フローティングアピアランスとあなたのアクティビティの境界線のみを提供します。アクティビティのタイトルバーのスタイルは変更されません。私は必ずしもダイアログの外観をカスタマイズする必要はありませんが、私はむしろアクティビティを本質的なダイアログのように見せようとしています(ただし、ユーザーの電話のテーマに合わせて見えるかもしれません)。 – eidylon

関連する問題