Calling android dialog without it fading the background

一世执手 提交于 2019-12-17 07:14:22

问题


I have this nice dialog view I set my UserInputDialog class to:

    <LinearLayout android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">

        <TextView
        android:id="@+id/nameMessage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="What is your name Captain?"
        >
        </TextView>
        <EditText
        android:id="@+id/nameEditText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        >
        </EditText>
    <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal">
    <Button
        android:id="@+id/okButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="OK">
        </Button>
        <Button android:id="@+id/cancelButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cancel">
        </Button>               
    </LinearLayout>
</LinearLayout>

I want my dialog to show up but for the background to not fade out. Is this possible? Cause the view that calls this dialog has a neato background I would like to be shown as a backdrop to the dialog.

I found this online:

<style name="doNotDim" parent="@android:style/Theme.Dialog">
    <item name="android:backgroundDimAmount">0</item>
</style >

but not sure how to apply that to my dialog? I have a class called public class UserInputDialog extends Dialog implements OnClickListener. It sets its content view to the layout described above.

I think I am doing this all right, just not sure how to add that style so I can NOT fade the background.

Secondary question: Can you get new looks on your dialog (by say having an image or icon display with your text there) by using Themes?


回答1:


Create a res/values/styles.xml file and add this to it.

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.DoNotDim" parent="android:Theme">
    <item name="android:backgroundDimEnabled">false</item>
  </style>
</resources>

And apply the theme to your activity.

<activity android:name=".SampleActivity" android:theme="@style/Theme.DoNotDim">



回答2:


You can also remove the dim effect by code with the following:

dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);



回答3:


Create a custom style and place it in your values folder

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="YourCustomStyle" parent="android:Theme">
    <item name="android:backgroundDimEnabled">false</item>
  </style>
</resources> 

To set a style to an individual dialog you can use

Dialog dialog = new Dialog(context, R.style.YourCustomStyle);



回答4:


For displaying dialog like TrueCaller do this:

In styles.xml file.

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="myBackgroundStyle" parent="android:Theme.Dialog">
    <item name="android:backgroundDimEnabled">false</item>
  </style>
</resources>

In AndroidManifest.xml do this:

<activity android:name=".SampleActivity" android:theme="@style/myBackgroundStyle">


来源:https://stackoverflow.com/questions/3113812/calling-android-dialog-without-it-fading-the-background

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!