2012-04-03 10 views
1
Pls see the code below.. 



final Dialog mDialog = new Dialog(this); 
    mDialog.setCanceledOnTouchOutside(true); //it works 

    mDialog.setContentView(R.layout.popup); 
    mDialog.show(); 

しかし、その後テーマが透明なときにダイアログをキャンセルするにはどうすればいいですか?私は、ダイアログのテーマを追加する場合

 final Dialog mDialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar); 
    mDialog.setCanceledOnTouchOutside(true); //But here It is not workin 
     mDialog.setContentView(R.layout.popup); 
    mDialog.show(); 

はpopup.xml

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
android:id="@+id/lyt_popup" 
android:layout_gravity="center" 
android:background="@drawable/popup_background" 
    android:layout_width="wrap_content" 
android:layout_height="wrap_content" > 
    <Button android:layout_height="wrap_content" android:background="@drawable/play_game"  android:id="@+id/btn_play" android:layout_width="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="96dp" android:layout_gravity="center_horizontal"> </Button> 
    <Button android:background="@drawable/memory_game" android:id="@+id/btn_memory" android:layout_width="wrap_content" android:layout_height="wrap_content" a ndroid:layout_gravity="center_horizontal"></Button> 

</LinearLayout> 
+1

t透明であることを意味する –

+0

edit.imはレイアウトを表示し、背景は透明です。 – vnshetty

答えて

2

android.R.style.Theme_Translucent_Nを使用していますoTitleBarは、ダイアログをフルスクリーンにしたい場合に機能します。以下は

<style 
    name="Theme_Dialog_Translucent" 
    parent="android:Theme.Dialog"> 
    <item 
     name="android:windowBackground">@null</item> 
</style> 

は、作業コード::

Dialog mDialog = new Dialog(this,R.style.ThemeDialogCustom); 
mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
mDialog.setCanceledOnTouchOutside(true); //But here It is not workin 
mDialog.setContentView(R.layout.popup); 
mDialog.show(); 

が値でstyle.xmlを持っている以下のように:::

<?xml version="1.0" encoding="utf-8"?> 

<resources> 
<style name="ThemeDialogCustom" parent="android:Theme.Dialog"> 
    <item name="android:windowFrame">@null</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:windowBackground">@color/transparent_color</item> 
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
    <item name="android:colorBackgroundCacheHint">@null</item> 
    </style> 

</resources> 
フォルダ:代替がそうのように、独自のスタイルを作成することです

colorsフォルダにcolors.xmlを追加する::

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="transparent_color">#00000000</color> 
</resources> 
+0

のためだけに機能しますが、背景は透明ではありません... – vnshetty

+0

今はうまく動作しようとしています –

+0

作業ナンバーを確認しましたか? –

0

代わりのmDialog.setCanceledOnTouchOutside(true); //しかし、ここではそれが働いていない、

それはmDialog.setCancelable(true);する必要があります

+0

mDialog.setCancelable(true);これは、バックボタン – vnshetty

関連する問題