web-dev-qa-db-ja.com

Androidダイアログを呼び出すと、背景がフェードしなくなります

この素敵なダイアログビューがあります。UserInputDialogクラスを次のように設定します。

    <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>

ダイアログを表示したいが、背景がフェードアウトしないようにしたい。これは可能ですか?このダイアログを呼び出すビューには、ダイアログの背景として表示したいニートな背景があります。

私はこれをオンラインで見つけました:

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

それを私のダイアログにどのように適用するかわかりませんか? public class UserInputDialog extends Dialog implements OnClickListenerというクラスがあります。コンテンツビューを上記のレイアウトに設定します。

私はこれを正しく行っていると思いますが、そのスタイルを追加する方法がわからないので、背景をフェードできません。

2番目の質問:テーマを使用して、ダイアログの外観を新しくすることはできますか(テキストや画像をアイコンで表示するなど)。

34
Codejoy

Res/values/styles.xmlファイルを作成し、これに追加します。

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

そして、あなたの活動にテーマを適用します。

<activity Android:name=".SampleActivity" Android:theme="@style/Theme.DoNotDim">
33
Robby Pond

次のコードを使用して、薄暗い効果を削除することもできます。

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

カスタムスタイルを作成し、valuesフォルダーに配置します

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

使用できる個々のダイアログにスタイルを設定するには

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

TrueCallerのようなダイアログを表示するには、次のようにします。

styles.xmlファイル。

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

AndroidManifest.xml これを行う:

<activity Android:name=".SampleActivity" Android:theme="@style/myBackgroundStyle">
1
activesince93