问题
I am working on my first Android application, and am trying to style my activity. Ultimately, I would like for my activity to look the same as a dialog. I have given all my activities the Theme.Dialog
style using the following code in my AndroidManifest.xml
:
<application
android:icon="@drawable/group"
android:label="@string/app_name"
android:theme="@android:style/Theme.Dialog">
</application>
This gives my activities the "floating" appearance and the borders of a dialog, but not the styled title. The title just has the same color and appearance as the general dialog background, not the "header" background and border as in a "real" dialog. Notice how in both examples the header has a nice border under it and in the second one, it has a gradient background.
Is there a way to make sure the title on my activity somehow inherits the system dialog title so as to effectively replicate the look of a dialog for my activity - in addition to the border and "float" which comes with the Theme.Dialog
style?
Note that I do not want to call my activity as a dialog from another, I just want it to LOOK like a dilaog, even when it is loaded in response to an intent as per my manifest's intent-filters.


ADD: Is there perhaps some way I can have my activity, when it spins up in onCreate()
, call some method to turn itself into an actual dialog? Keep in mind the activity still needs to be able to respond to intents from the system.
回答1:
A Dialog theme can be customised by specifying it as parent, in styles.xml
<resources>
<style name="MyDialogTheme" parent="android:Theme.Dialog">
<item name="android:background">#ffdddddd</item>
</style>
</resources>
If you give a different color to the background of customized dialog style and the layout(add android:background="#ffffffff"
under layout header in your main.xml file), it would give a system dialog like look.
Hope this helps..
Missed to mention: Refer to the customized theme in your manifest as below:
android:theme="@style/MyDialogTheme"
回答2:
You can do as follow..
create a layout for your dialog and set in as below.
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();
回答3:
After deciding to look at what I wanted to do, instead of how to do it specifically, I found a different approach. I reasked my question looking for approach ideas instead of implementation ideas here. GalDude33 helped me figure out how to achieve what I wanted. His answer there was the answer to this Q.
来源:https://stackoverflow.com/questions/8738264/how-can-i-show-my-activity-as-a-dialog-in-android